Błąd podczas pompowania klasy android.support.v7.widget.Toolbar?

82

Próbuję uzyskać Material Design dla mojej aplikacji, postępując zgodnie z tą metodą .

Za każdym razem, gdy uruchamiam aplikację, pojawia się następujący błąd:

Błąd podczas pompowania klasy android.support.v7.widget.Toolbar.

Sprawdziłem, czy poprawnie dodałem appcompat. Ale to wszystko jest dla mnie poprawne. Więc proszę powiedz mi, co robię źle?

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)

EDYTOWAĆ

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>
AruLNadhaN
źródło
@GabrieleMariotti See the Edit ..
AruLNadhaN
Miałem również ten problem i po chwili zdałem sobie sprawę, że po prostu zapomniałem zrobić MyActivity rozszerzającego ActionBarActivity zamiast Activity. Może komuś pomóc
MathieuMaree
@ArulNadhan, czy znalazłeś rozwiązanie? Mam ten sam problem.
William Grand
@WilliamGrand Zobacz odpowiedź ...
AruLNadhaN
1
Dla mnie błędem było to, że używałem <android.widget.Toolbar /> zamiast <android.support.v7.widget.Toolbar />
Ajith Memana

Odpowiedzi:

74

Jeśli używasz nowych implementacji androidx , podczas wpisywania paska narzędzi Studio automatycznie uzupełni je do android.support.v7.widget.Toolbar, ale powinieneś użyć androidx.appcompat.widget.Toolbarzamiast tego, w przeciwnym razie pojawi się ten błąd.

Gudin
źródło
@Gudin, gdzie naprawdę są opisane te zależności?
bzal
2
Dokumentacja na ten temat zdecydowanie nie jest aktualizowana i zawiera androidx. Dziękujemy za tę odpowiedź!
Aman Alam
Niesamowite, że to wciąż jest rzecz. Dzięki za Twój post, zaoszczędził dużo czasu.
William T. Mallard
37

Przepraszam chłopaki. Już dawno rozwiązałem ten problem. Zrobiłem wiele zmian. Więc nie mogę dowiedzieć się, który z nich działa.

  1. Zmieniłem identyfikator zgodnie z sugestią Jareda Burrowsa.

  2. Usunąłem bibliotekę pomocy technicznej, wyczyściłem projekt i ponownie go dodałem.

  3. Idź do Plik -> Unieważnij pamięci podręczne / Uruchom ponownie.

Mam nadzieję, że to działa.

Tak wygląda teraz mój kod

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>
AruLNadhaN
źródło
W moim przypadku zrobiłem 3 krok, jak zasugerowałem w powyższej odpowiedzi.
Gem
@dimen/abc_action_bar_default_height_materialjest oznaczony jako prywatny. Tylko ostrzeżenie, które można zignorować?
hgoebl
Zastąpienie parent = "AppTheme.NoActionBar" na parent = "" rozwiązało mój problem.
Gurvinder Singh
29

Zdarzyło mi się to, gdy próbowałem użyć mojego starszego kodu w nowym Androidzie z implementacjami Androidx. zmień swoją definicję XML na;

<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" />

następnie w swoim kodzie java;

import androidx.appcompat.widget.Toolbar;
Enock Lubowa
źródło
1
Dzięki, stary, to była odpowiedź, której szukałem :)
Mukesh Chauhan
24

Udało mi się rozwiązać ten problem, zastępując następujące:

W układzie paska narzędzi zamień wszystko, co wygląda tak:

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

z

android:minHeight="@dimen/abc_action_bar_default_height_material"
android:background="@color/myColor"
mike.b93
źródło
Dziękuję za odpowiedź.
Meher
android: background = "? attr / colorPrimary" to należy usunąć, ponieważ pasek narzędzi nie lubi żadnych elementów materialnych, które mają być zaangażowane
TSG anti SO dark force
dla api 19 i niższych
TSG anti SO dark force
Wielkie dzięki, uratowałeś mi dzień
akhil
6

Miałem ten sam problem, co przy korzystaniu z wersji 23.2.0 biblioteki AppCompat. Zaktualizowałem bibliotekę pomocy do wersji 23.2.1 i problem został rozwiązany.

Ten problem z paskiem narzędzi został rozwiązany w 23.2.1

iAviatorJose
źródło
może to być najbardziej aktualna poprawka. zaktualizuj swój sdk.
ralphgabb
2
W 23.3.0 widzę raporty o awariach tylko dla użytkowników z 4.4.2
Gillis Haasnoot
5

Przeczytaj ten post na blogu 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" />

Ponadto dwukrotnie nadajesz mu ten sam „identyfikator”, usuń „identyfikator” z listy:

<include android:id="@+id/toolbar" layout="@layout/toolbar" />
Jared Burrows
źródło
1
Dlaczego miałbyś usunąć przestrzeń nazw? Ponadto, w odniesieniu do dwóch odniesień do identyfikatorów, jeden identyfikator odnosi się do wystąpienia paska narzędzi w układzie, a drugi jest identyfikatorem zasobu. Więc myślę, że potrzebujesz obu.
William Grand
@WilliamGrand Nie jestem pewien, kiedy „edytował” swój post. Teraz widzę, że jego pasek narzędzi znajduje się w oddzielnym pliku, pozostawienie przestrzeni nazw jest w porządku. Istnieją dwa takie same „identyfikatory”, a on używa dołączenia, aby wprowadzić ten układ do innego układu. Nie potrzebuje „identyfikatora” na załączniku.
Jared Burrows
1
Identyfikator dołączenia po prostu zastąpi identyfikator użyty dla tego elementu w układzie po jego zawyżeniu; to jest cecha włączania. Dopóki używa prawidłowego identyfikatora w swoim kodzie, nie powinno to niczego boleć.
Lorne Laliberte
3

Mam ten sam problem, ale to było po aktualizacji do appcompatv23.2.0. Wypróbowałem wszystkie powyższe sugestie, ale nie działały. Następnie przeszedłem do mojego pliku Gradle i zastąpiłem:

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

}

z:

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

Odbuduj projekt i problem zniknął. Może to być problem z aplikacją kompaktową w wersji 23.2.0, mam nadzieję, że pojawi się lepsze rozwiązanie, które pozwoli nam pracować z nową aktualizacją.

Mam nadzieję że to pomoże. Dziękuję Ci.

nmvictor
źródło
compile 'com.android.support:design:23.0.1'ten kod rozwiązał mój problem
Mohammed Tawfik
3

Rozwiązałem ten problem, modyfikując plik build.gradle aplikacji.

Dla wtyczki Gradle 2.0+

 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }  

Dla wtyczki Gradle 1.5

 android {  
   defaultConfig {  

     generatedDensities = []  
  }  

  aaptOptions {  
    additionalParameters "--no-version-vectors"  
  }  
 } 
Pacific P. Regmi
źródło
3

Wiem, że to stare pytanie, ale ostatnio napotkałem ten sam problem. Skończyło się to problemem Proguard (kiedy ustawić minifyEnabledaby falsezatrzymał się dzieje).

Aby to zatrzymać, z włączonym proguardem, dodałem do mojego pliku reguł programu proguard, dzięki rozwiązaniu, które znalazłem gdzie indziej (po odkryciu, że problem był proguard)

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

Nie jestem pewien, czy są konieczne, ale dodałem też te wiersze:

-keep class com.google.** { *; }
-keep interface com.google.** { *; }
Krzykliwy
źródło
2
Pomogło mi to, ponieważ otrzymuję ten błąd tylko w kompilacji wydania.
Rahul Chandrabhan
1

Miałem ten sam problem. Rozwiązanie, które zadziałało dla mnie. Jeśli używasz v7.Toolbar, musisz użyć motywu rozszerzonego z Theme.AppCompat. * Nie możesz użyć motywu rozszerzonego z android: Theme.Material. *, Ponieważ mają one inne atrybuty stylu.

Mam nadzieję, że to pomoże.

Vlad Hudnitsky
źródło
1

Usunąłem te linie, jak poniżej:

przed :

<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" >

po :

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

Zamiast "@ attr / actionBarSize" wstaw określone wymiary, to działa dla mnie.

Prashant
źródło
1

Aby rozwiązać ten problem. najpierw musisz dodać latestandroid-support-v7-appcompat z \ sdk \ extras \ android \ support

  1. Zamknij główny projekt.
  2. Usuń plik android-support-v7-appcompat.
  3. Uruchom ponownie Eclipse.
  4. Dodaj plik android-support-v7-appcompat.
  5. Czyste, aby zbudować projekt.
  6. Następnie otwórz główny projekt i skompiluj wszystkie projekty.
  7. Błąd nadal występuje. Uruchom ponownie zaćmienie. Otóż ​​to.

U mnie to działa i zdecydowanie polecam korzystanie z Android Studio.

Hemant Shori
źródło
1

To zadziałało dla mnie: Dodaj kompilację „com.android.support:appcompat-v7:21.0.3” do gradle. Zmień docelową wartość SDK na 21. Mam nadzieję, że to działa dla Ciebie!

Claudio
źródło
1

U mnie zadziałało po tym, jak:

  • Roztwór czyszczący.
  • Usuwanie aplikacji z telefonu, na którym ją debugowałem.
  • Zamykanie programu Visual Studio.
  • Usuwanie folderów / bin / i / obj / w projektach Androida.
  • Ponownie uruchamiam rozwiązanie.
nvbnvb
źródło
1

Żadne z powyższych rozwiązań nie zadziałało.

Nie miałem paska narzędzi w moim projekcie, ale pojawił się ten sam błąd.

Wyczyściłem projekt, odinstalowałem aplikację. Następnie uruchomiłem kompilację gradlew --refresh-dependencies i odkryłem, że w plikach xml były zdarzenia onclick bez odpowiedniego kodu.

Usunąłem je, przebudowałem projekt i zadziałało.

Wyglądało na to, że zależności nie zostały zaktualizowane, ale to już inna historia.

miłość na żywo
źródło
1

W przypadku platformy Xamarin w VS należy dodać

Theme = "@style/MyThemesss"

do youractivity.cs.

Dodaję to i kontynuuję.

sa1
źródło
1

W moim przypadku otrzymałem ten błąd w wyjątku inflacji w Imageview, w niższych wersjach i Lollipop OS.

Rozwiązałem ten wyjątek podczas przenoszenia całego pliku obrazu z folderu do rysowania w wersji 24 do folderu do rysowania.

Mayuresh Deshmukh
źródło
0

Miałem problemy z włączaniem paska narzędzi w RelativeLayout, spróbuj z LinearLayout. Jeśli chcesz nałożyć pasek narzędzi, spróbuj:

 <RelativeLayout>

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

    <Button></Button>

 </RelativeLayout>

Nie rozumiem dlaczego, ale to działa dla mnie.

Juanjo
źródło
0

Nie jest jasne, dlaczego ten błąd wystąpił u mnie, ale rozwiązałem. Użyłem tego samego układu, in-line lub używając include, oba powodują błąd NPE. Więc myślę, że to nie jest problem z układem.

Miałem abstrakcyjne wywołanie klasy BaseActivity rozszerza ActionBarActivity, które mają metodę initActionBar (). Nadpisuję i wywołuję tę metodę w OnCreate klasy potomnej. Coś w tym stylu:

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);
}

MIAŁEM BŁĄD NPE Z POWYŻSZYM KODEM. NIE WIEM, DLACZEGO Mylę się. ROZWIĄZAAM PONIŻSZY KOD I WYGLĄDA TAK SAMO.

@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();
}
Khai Nguyen
źródło
0

W moim przypadku problem polegał na wywołaniu inflater.inflate (R.layout.some_layout, null). Problem był pusty, ponieważ parametr ViewGroup.

Oknesif
źródło
0

Rozwiązanie problemu zostało znalezione w dokumencie XML dla mojego głównego działania. Pierwotnie mój pasek narzędzi był <android.support.v7.widget.Toolbar. Aby rozwiązać ten problem, zmieniłem go na <android.widget.Toolbar. Nie wiem jednak, dlaczego to zadziałało. Czy ktoś ma pojęcie, dlaczego?

androidtitan
źródło
<android.support.v7.widget.Toolbar ma obsługiwać urządzenia sprzed wersji Lollipop. Możesz to przeczytać android-developers.blogspot.in/2014/10/…
Sagar Devanga
0

Problem dotyczył urządzeń pre-lolipop. Udało mi się rozwiązać ten problem, zastępując następujące:

W układzie paska narzędzi zamień wszystko, co wygląda tak:

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

z

android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
Rumit Patel
źródło
0

U mnie błąd polegał na tym, że miałem:

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

zamiast:

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

Konkretnie, zamiast kropki w pierwszym wierszu znajdował się dwukropek między słowami „android” i „wsparcie”.

Ellen Spertus
źródło
Nie wiem, jak to mogłoby komukolwiek pomóc.
ichalos
@ichalos może służyć jako bezpłatna alternatywa dla zone.msn.com/en/spotthedifference
obe