Lỗi khi thổi phồng lớp android.support.v7.widget.Toolbar?


82

Tôi đang cố gắng tải Material Design cho Ứng dụng của mình bằng cách làm theo phương pháp này .

Bất cứ khi nào tôi chạy ứng dụng, nó hiển thị lỗi sau:

Lỗi thổi phồng lớp android.support.v7.widget.Toolbar.

Tôi đã kiểm tra xem mình đã thêm appcompat đúng cách chưa. Nhưng tất cả đều đúng với tôi. Vậy xin hãy cho tôi biết tôi đang làm gì sai?

build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion '21.0.2'

    defaultConfig {
        applicationId "io.bxbxbai.feedlistviewdemo"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles 'proguard-rules.pro'
        }
    }
}

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile project(':materialDesign')
    compile 'com.balysv.materialmenu:material-menu:1.4.0'
    compile 'com.android.support:appcompat-v7:21.+'
}

Logcat

02:11.641  20583-20583/io.bxbxbai.feedlistviewdemo E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: io.bxbxbai.feedlistviewdemo, PID: 20583
    java.lang.RuntimeException: Unable to start activity ComponentInfo{io.bxbxbai.feedlistviewdemo/io.bxbxbai.androiddemos.MainActivity}: android.view.InflateException: Binary XML file line #3: Error inflating class android.support.v7.widget.Toolbar
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2224)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2283)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5158)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.view.InflateException: Binary XML file line #3: Error inflating class android.support.v7.widget.Toolbar
            at android.view.LayoutInflater.createView(LayoutInflater.java:620)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
            at android.view.LayoutInflater.parseInclude(LayoutInflater.java:816)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
            at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
            at io.bxbxbai.androiddemos.MainActivity.onCreate(MainActivity.java:31)
            at android.app.Activity.performCreate(Activity.java:6144)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2181)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2283)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5158)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
            at android.view.LayoutInflater.createView(LayoutInflater.java:594)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
            at android.view.LayoutInflater.parseInclude(LayoutInflater.java:816)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
            at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
            at io.bxbxbai.androiddemos.MainActivity.onCreate(MainActivity.java:31)
            at android.app.Activity.performCreate(Activity.java:6144)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2181)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2283)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5158)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NoSuchMethodError: android.support.v4.content.ContextCompat.getDrawable
            at android.support.v7.internal.widget.TintManager.getDrawable(TintManager.java:133)
            at android.support.v7.internal.widget.TintTypedArray.getDrawable(TintTypedArray.java:62)
            at android.support.v7.widget.Toolbar.<init>(Toolbar.java:248)
            at android.support.v7.widget.Toolbar.<init>(Toolbar.java:190)
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
            at android.view.LayoutInflater.createView(LayoutInflater.java:594)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
            at android.view.LayoutInflater.parseInclude(LayoutInflater.java:816)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
            at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
            at io.bxbxbai.androiddemos.MainActivity.onCreate(MainActivity.java:31)
            at android.app.Activity.performCreate(Activity.java:6144)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2181)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2283)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5158)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
            at dalvik.system.NativeStart.main(Native Method)

BIÊN TẬP

toolbar.xml

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimaryDark"/>

activity_main.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity"
        tools:ignore="MergeRootFrame">

        <include android:id="@+id/toolbar" layout="@layout/toolbar" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/btn_feed_list_demo"
            android:text="@string/feed_list_demo"/>

    </RelativeLayout>

@GabrieleMariotti Xem phần chỉnh sửa ..
AruLNadhaN

Cũng gặp vấn đề này và nhận ra sau một thời gian rằng tôi chỉ đơn giản là quên đặt MyActivity mở rộng ActionBarActivity thay vì Hoạt động. Có thể giúp đỡ một người nào đó
MathieuMaree

@ArulNadhan, bạn đã tìm ra giải pháp chưa? Tôi đang gặp vấn đề tương tự.
William Grand

@WilliamGrand Xem câu trả lời ...
AruLNadhaN

1
Đối với tôi, sai lầm là tôi đã sử dụng <android.widget.Toolbar /> thay vì <android.support.v7.widget.Toolbar />
Ajith Memana

Câu trả lời:


73

Nếu bạn đang sử dụng các triển khai androidx mới , khi nhập Thanh công cụ, Studio sẽ tự động hoàn thành android.support.v7.widget.Toolbar, nhưng bạn nên sử dụng androidx.appcompat.widget.Toolbarthay thế, nếu không bạn sẽ gặp lỗi này.


@Gudin, những thứ này thực sự được mô tả ở đâu?
bzal

1
Tài liệu cho điều này chắc chắn không được cập nhật để bao gồm androidx Cảm ơn vì câu trả lời này!
Aman Alam

Thật ngạc nhiên rằng đây vẫn là một điều. Cảm ơn cho bài viết của bạn, nó đã tiết kiệm rất nhiều thời gian.
William T. Mallard

36

Xin lỗi các bạn. Tôi đã giải quyết vấn đề này từ lâu. Tôi đã thay đổi rất nhiều. Vì vậy, tôi không thể tìm ra cái nào thực hiện thủ thuật.

  1. Tôi đã thay đổi id theo đề xuất của Jared Burrows.

  2. Đã xóa thư viện hỗ trợ của tôi và làm sạch dự án của tôi và thêm lại nó.

  3. Đi tới Tệp -> Không hợp lệ bộ nhớ cache / Khởi động lại.

Hy vọng nó hoạt động.

Đây là cách mã của tôi trông bây giờ

activity.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include
        android:id="@+id/toolbar_actionbar"
        layout="@layout/toolbar_default"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/toolbar_actionbar">

        <FrameLayout
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

        <fragment
            android:id="@+id/fragment_drawer"
            android:name="com.arul.anahy.drawer.NavigationDrawerFragment"
            android:layout_width="@dimen/navigation_drawer_width"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            app:layout="@layout/fragment_navigation_drawer"/>
    </android.support.v4.widget.DrawerLayout>
</RelativeLayout>

toolbar_default.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    style="@style/ToolBarStyle"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="@dimen/abc_action_bar_default_height_material"/>

ToolBarStyle

<style name="ToolBarStyle" parent="">
        <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
        <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
 </style>

Trong trường hợp của tôi, tôi đã thực hiện bước thứ 3 như đã đề xuất ở trên.
Gem

@dimen/abc_action_bar_default_height_materialđược đánh dấu là riêng tư. Chỉ là một cảnh báo có thể được bỏ qua?
hgoebl

Thay thế parent = "AppTheme.NoActionBar" thành parent = "" đã giải quyết được vấn đề của tôi.
Gurvinder Singh

29

Điều này đã xảy ra với tôi khi tôi cố gắng sử dụng mã cũ hơn của mình trong Android mới với các triển khai androidx. thay đổi định nghĩa XML của bạn thành;

<androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
            app:titleTextColor="@android:color/white" />

sau đó trong mã java của bạn;

import androidx.appcompat.widget.Toolbar;

1
Cảm ơn, bro này là câu trả lời tôi đang tìm kiếm :)
Mukesh Chauhan

24

Tôi có thể giải quyết vấn đề này bằng cách thay thế những điều sau:

Trong bố cục Thanh công cụ, hãy thay thế mọi thứ giống như sau:

android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"

với

android:minHeight="@dimen/abc_action_bar_default_height_material"
android:background="@color/myColor"

Cảm ơn vì câu trả lời.
Meher

android: background = "? attr / colorPrimary" cần phải loại bỏ điều này vì thanh công cụ không thích bất kỳ yếu tố vật chất nào có liên quan
TSG anti SO dark

cho api 19 và dưới
TSG chống SO thế lực đen tối

Cảm ơn rất nhiều, Bạn đã cứu một ngày của tôi
akhil

6

Tôi đã giải quyết Vấn đề này bằng blog này: http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

Vấn đề là bạn sử dụng chủ đề sai, bạn có thể chọn chủ đề giống như Theme.AppCompat.NoActionBar, trong dự án của tôi, nó hoạt động.

Tôi hy vọng sẽ giúp bạn。


Điều này đã giải quyết được nó cho tôi khi làm việc ở Xamarin, tôi không đặt chủ đề cho hoạt động.
Đăng Impatica vào

6

Tôi đã gặp sự cố tương tự khi sử dụng phiên bản 23.2.0 của Thư viện AppCompat. Tôi đã cập nhật thư viện hỗ trợ lên 23.2.1 và sự cố đã được giải quyết.

Sự cố Thanh công cụ này đã được giải quyết trong 23.2.1


đây có thể là bản sửa lỗi cập nhật nhất. cập nhật sdk của bạn.
ralphgabb

2
Trong 23.3.0, tôi thấy báo cáo sự cố cho người dùng chỉ với 4.4.2
Gillis Haasnoot,

5

Vui lòng đọc bài đăng trên Blog này của Google: http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

<android.support.v7.widget.Toolbar
    android:id="@+id/my_awesome_toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary" />

Ngoài ra, bạn đang cấp cho nó cùng một "ID" hai lần, vui lòng xóa "id" khỏi bao gồm của bạn:

<include android:id="@+id/toolbar" layout="@layout/toolbar" />

1
Tại sao bạn xóa không gian tên? Ngoài ra, liên quan đến hai tham chiếu đến id, một id đề cập đến phiên bản của thanh công cụ trong bố cục và id còn lại là id Tài nguyên. Vì vậy, tôi nghĩ bạn cần cả hai.
William Grand

@WilliamGrand Tôi không chắc anh ấy đã "chỉnh sửa" bài đăng của mình khi nào. Bây giờ tôi thấy rằng thanh công cụ của anh ấy nằm trong một tệp riêng biệt, bỏ không gian tên cũng được. Có hai "id" giống nhau và anh ấy đang sử dụng bao gồm để đưa bố cục đó vào một bố cục khác. Anh ta không cần "id" trên bao gồm.
Jared Burrows

1
Id trên bao gồm sẽ chỉ ghi đè lên id được sử dụng cho phần tử đó trong bố cục khi nó được thổi phồng lên; đó là một tính năng của bao gồm. Vì vậy, miễn là anh ta sử dụng đúng id trong mã của mình, nó sẽ không ảnh hưởng gì.
Lorne Laliberte

3

Tôi gặp phải vấn đề tương tự nhưng đó là sau khi tôi đã cập nhật lên appcompatv23.2.0. Tôi đã thử tất cả các đề xuất ở trên nhưng không hoạt động. Sau đó, tôi tiếp tục với tệp Gradle của mình và thay thế:

dependencies {
compile 'com.android.support:appcompat-v7:23.2.0’
compile 'com.android.support:design:23.2.0'

}

với:

dependencies {
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
}

Xây dựng lại dự án và vấn đề đã biến mất. Đó có thể là sự cố với ứng dụng compact v23.2.0, hy vọng sắp tới sẽ có giải pháp tốt hơn để chúng tôi có thể làm việc với bản cập nhật mới.

Hi vọng điêu nay co ich. Cảm ơn bạn.


compile 'com.android.support:design:23.0.1'mã này đã giải quyết được vấn đề của tôi
Mohammed Tawfik

3

Tôi đã khắc phục sự cố này bằng cách sửa đổi tệp app build.gradle.

Đối với Plugin Gradle 2.0+

 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }  

Đối với Plugin Gradle 1.5

 android {  
   defaultConfig {  

     generatedDensities = []  
  }  

  aaptOptions {  
    additionalParameters "--no-version-vectors"  
  }  
 } 

3

Tôi biết đây là một câu hỏi cũ, nhưng gần đây tôi đã gặp phải vấn đề tương tự. Rốt cuộc nó cũng trở thành một vấn đề Proguard (khi tôi đặt minifyEnabledđể falsenó dừng lại xảy ra.)

Để ngăn chặn nó, với việc bật proguard, tôi đã thêm phần sau vào tệp quy tắc proguard của mình, nhờ một giải pháp mà tôi đã tìm thấy ở nơi khác (sau khi phát hiện ra rằng vấn đề là proguard)

-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }

Không chắc liệu chúng có cần thiết hay không, nhưng tôi cũng đã thêm những dòng này:

-keep class com.google.** { *; }
-keep interface com.google.** { *; }

2
Điều này đã giúp tôi, vì tôi chỉ gặp lỗi này trong phiên bản phát hành.
Rahul Chandrabhan

1

Tôi phải đối mặt với cùng một vấn đề. Giải pháp đã làm việc cho tôi. Nếu bạn sử dụng v7.Toolbar, bạn phải sử dụng chủ đề mở rộng từ Theme.AppCompat. * Bạn không thể sử dụng chủ đề mở rộng từ android: Theme.Material. * Vì chúng có các thuộc tính kiểu khác nhau.

Hy vọng nó sẽ hữu ích.


1

Tôi đã xóa những dòng này như bên dưới:

trước :

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar1"
    android:layout_width="match_parent"
    android:layout_height="@attr/actionBarSize"
    android:minHeight="@attr/actionBarSize"
    android:layout_alignParentTop="true" >

sau :

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar1"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_alignParentTop="true" >

Thay vì "@ attr / actionBarSize", hãy đặt kích thước cụ thể, nó phù hợp với tôi.


1

Để khắc phục sự cố này. trước tiên bạn phải thêm newandroid-support-v7-appcompat từ \ sdk \ extras \ android \ support

  1. Đóng dự án chính.
  2. Xóa android-support-v7-appcompat.
  3. Khởi động lại Eclipse.
  4. Thêm android-support-v7-appcompat.
  5. Làm sạch, Để xây dựng dự án.
  6. Sau đó mở dự án chính và xây dựng tất cả các dự án.
  7. Lỗi vẫn còn. Khởi động lại nhật thực. Đó là nó.

Điều đó phù hợp với tôi và tôi thực sự khuyên bạn nên sử dụng Android Studio.


1

Điều này làm việc cho tôi: Thêm biên dịch 'com.android.support:appcompat-v7:21.0.3' vào gradle. Thay đổi mục tiêu sdk thành 21. Hy vọng nó hiệu quả với bạn!


1

Đối với tôi, nó đã hoạt động sau khi tôi làm:

  • Dung dịch tẩy rửa.
  • Đang xóa ứng dụng khỏi điện thoại mà tôi đã gỡ lỗi.
  • Đóng Visual Studio.
  • Xóa thư mục / bin / và / obj / trong các dự án Android.
  • Khởi chạy giải pháp một lần nữa.

1

Không có giải pháp nào ở trên phù hợp với tôi.

Tôi không có thanh công cụ trong dự án của mình, nhưng gặp lỗi tương tự.

Tôi đã dọn dẹp dự án, gỡ cài đặt ứng dụng. Sau đó, tôi chạy bản dựng gradlew --refresh-dependencies và phát hiện ra có một số sự kiện onclick không có mã tương ứng trong các tệp xml.

Tôi đã loại bỏ chúng, xây dựng lại dự án và nó đã hoạt động.

Các phụ thuộc dường như không được cập nhật, nhưng đó là một câu chuyện khác.


1

Trong trường hợp Xamarin trong VS, bạn phải thêm

Theme = "@style/MyThemesss"

cho bạn .cs.

Tôi thêm điều này và tiếp tục.


1

Trong trường hợp của tôi, tôi gặp lỗi này trong ngoại lệ Lạm phát trên Imageview, trong các phiên bản thấp hơn và hệ điều hành lollipop.

Tôi đã giải quyết ngoại lệ này khi di chuyển tất cả tệp hình ảnh trong thư mục drawable v-24 sang thư mục drawable.


0

Tôi đã gặp sự cố bao gồm thanh công cụ trong RelativeLayout, hãy thử với LinearLayout. Nếu bạn muốn phủ thanh công cụ, hãy thử với:

 <RelativeLayout>

    <LinearLayout>
      --INCLUDE tOOLBAR--
    </LinearLayout>

    <Button></Button>

 </RelativeLayout>

Tôi không hiểu tại sao nhưng nó hiệu quả với tôi.


0

Không rõ tại sao lỗi này xảy ra với tôi nhưng tôi đã giải quyết được. Tôi đã sử dụng cùng một bố cục, trong dòng hoặc sử dụng bao gồm, cả hai đều gây ra lỗi NPE. Vì vậy, tôi nghĩ rằng nó không phải là vấn đề bố cục.

Tôi đã có một cuộc gọi lớp trừu tượng BaseActivity mở rộng ActionBarActivity có phương thức initActionBar (). Tôi ghi đè và gọi phương thức này trong OnCreate của lớp con. Đại loại như vậy:

android.support.v7.app.ActionBar mActionBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_book_appointment);

    // Inject View using ButterKnife
    ButterKnife.inject(this);

    // Init toolbar & status bar
    initActionBar();
}

@Override
protected void initActionBar() {
    super.initActionBar();

    setSupportActionBar(mToolBar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    mActionBar = getSupportActionBar();
    mActionBar.setDisplayHomeAsUpEnabled(true);
    mActionBar.setHomeButtonEnabled(true);
}

TÔI ĐÃ CÓ LỖI NPE VỚI MÃ TRÊN. TÔI KHÔNG BIẾT TẠI SAO MÌNH SAI. TÔI GIẢI QUYẾT BẰNG MÃ DƯỚI ĐÂY VÀ CŨNG NHÌN.

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_book_appointment);
    ButterKnife.inject(this);

    setSupportActionBar(mToolBar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    mActionBar = getSupportActionBar();
    mActionBar.setDisplayHomeAsUpEnabled(true);
    mActionBar.setHomeButtonEnabled(true);

    initActionBar();
}

@Override
protected void initActionBar() {
    super.initActionBar();
}

0

Trong trường hợp của tôi, một vấn đề xảy ra trong việc gọi hàm Inflater.inflate (R.layout.some_layout, null). Không có tham số ViewGroup là vấn đề.


0

Giải pháp cho vấn đề đối với tôi đã được tìm thấy trong tài liệu XML cho Hoạt động chính của tôi. Ban đầu thanh công cụ của tôi là <android.support.v7.widget.Toolbar. Để giải quyết điều này, tôi đã thay đổi nó thành <android.widget.Toolbar. Tôi không biết tại sao điều này làm việc mặc dù. Có ai có bất kỳ cái nhìn sâu sắc về lý do tại sao?


<android.support.v7.widget.Toolbar là để hỗ trợ các thiết bị tiền kẹo mút. Bạn có thể đọc android-developers.blogspot.in/2014/10/...
Sagar Devanga

0

Vấn đề là đối với các thiết bị trước lolipop. Tôi có thể giải quyết vấn đề này bằng cách thay thế những điều sau:

Trong bố cục Thanh công cụ, hãy thay thế mọi thứ giống như sau:

android:layout_height="?android:attr/actionBarSize"
android:background="?android:attr/colorPrimary"

với

android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"

0

Đối với tôi, lỗi là tôi đã:

    <android:support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"/>

thay vì:

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"/>

Cụ thể, tôi đã có dấu hai chấm giữa "android" và "support" trên dòng đầu tiên thay vì dấu chấm.


Tôi không thấy làm thế nào điều này có thể giúp bất cứ ai.
ichalos

@ichalos nó có thể đóng vai trò như một sự thay thế miễn phí cho zone.msn.com/en/spotthedifference
OBE
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.