Próbuję przesuwać swoje rzeczy, aby użyć Toolbar
zamiast paska akcji, ale ciągle pojawia się komunikat o błędzie
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tyczj.weddingalbum/com.xxx.xxx.MainActivity}: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
at android.support.v7.app.ActionBarActivityDelegateBase.setSupportActionBar(ActionBarActivityDelegateBase.java:165)
at android.support.v7.app.ActionBarActivity.setSupportActionBar(ActionBarActivity.java:92)
at com.xxx.xxx.MainActivity.onCreate(MainActivity.java:113)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
więc dodałem w moim stylu, aby moja aktywność nie miała paska akcji
<style name="AppCompatTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:windowActionBar">false</item>
</style>
a temat dotyczy działań w moim manifeście
<activity
android:name=".MainActivity"
android:windowSoftInputMode="adjustResize|stateHidden"
android:theme="@style/AppCompatTheme" android:screenOrientation="portrait"/>
MainActivity rozszerza GooglePlayServiceActivity, więc również tam ustawiłem motyw
<activity
android:name=".GooglePlayServicesActivity"
android:label="@string/title_activity_google_play_services"
android:theme="@style/AppCompatTheme">
ale nadal pojawia się błąd. Nigdzie też nie żądam funkcji okna. jakieś pomysły, dlaczego wciąż to otrzymuję?
windowActionBar
nie to samo coandroid:windowActionBar
?Innym łatwym sposobem jest uczynienie z motywu takiego dziecka
Theme.AppCompat.Light.NoActionBar
:źródło
GooglePlayServiceActivity
, nie pamiętamDodać jedną linię
android:theme="@style/AppTheme.NoActionBar"
doactivity
wAndroidManifest
i zrobiłeś.AndroidManifest.xml :
styles.xml
źródło
Aby użyć paska narzędzi jako paska akcji, najpierw wyłącz pasek akcji dostarczony z dekoracją.
Najprostszym sposobem jest rozszerzenie motywu
(lub jego lekki wariant).
Po drugie, utwórz instancję paska narzędzi Toolbar, zwykle poprzez układ XML:
Następnie w swojej aktywności lub fragmencie ustaw pasek narzędzi, aby działał jako pasek akcji:
Ten kod działał dla mnie.
źródło
<android.support.v7.widget.Toolbar
do XML.Jeśli chcesz połączyć niektóre działania z paskiem działania, a inne nie, powinieneś użyć motywu podstawowego z włączonym paskiem działania, a następnie utworzyć podtemat, który będzie używany w działaniach, które nie wymagają paska działań
Na przykład możesz użyć takiego stylu podrzędnego
Podczas gdy motyw podstawowy się rozszerza, powiedz
a następnie użyj motywu innego niż pasek akcji w pliku AndroidManifest w tagu aktywności
musisz to zastosować do każdego pojedynczego działania, które nie potrzebuje paska działań, więc jeśli twój projekt wymaga mniej działań paska działania niż nie, lepiej zastosować to na podstawowym poziomie motywu
źródło
Miałem również ten sam problem. Ale użyłem:
getSupportActionBar().hide();
przed
setContentView(R.layout.activity_main);
Teraz działa.
I możemy wypróbować inną opcję w Style.xml ,
źródło
Dodaj to do swoich wartości / styles.xml
I dodaj następujący kod do wartości-v11 / styles.xml i wartości-v14 / styles.xml
Otóż to. To będzie działać.
źródło
Musisz się zmienić
te linie w manifeście. Będzie to dla mnie idealnie działać.
źródło
Przejdź do „style.xml” swojego projektu i ustaw wartość windowActionBar na false
źródło
Dodaj dwie linie do motywu aplikacji w pliku style.xml: -
źródło
Dodałem pasek narzędzi do mojego xml. Następnie w swojej działalności dodałem następujące oświadczenie:
Usunięcie tego działało dla mnie. Mam nadzieję, że to komuś pomoże.
źródło
Jeśli pojawi się błąd w tym wierszu:
Musisz sprawdzić, czy twoja aktywność dotyczy motywu zawierającego pasek narzędzi. AppTheme aplikacji może już zawierać pasek narzędzi, taki jak
i próbujesz dodać drugi. Jeśli chcesz użyć aplikacji AppTheme, musisz usunąć motyw ze swojej aktywności, w pliku manifest.xml.
Na przykład:
źródło
Użyj tego w tagu aplikacji w manifeście lub w tagu aktywności.
źródło
Jeśli korzystasz z
Appcompact
działania, użyj tych trzech wierszy w swoim motywie.źródło
Mówiąc najprościej, możesz wykonać następujące czynności:
źródło
W ten sposób rozwiązałem problem. Dodaj poniższy kod w swoim
AndroidMainfest.xml
źródło
Lub Po prostu zmień @ Style / AppTheme
To działa dla mnie!
źródło
źródło
Istnieją dwa proste i szybkie rozwiązania
przejdź do res -> wartości -> style
Możesz także obejrzeć ten film dla większej wygody KLIKNIJ TUTAJ
Rozwiązanie 1:
Możesz usunąć pasek akcji, zastępując go
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
do
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
Rozwiązanie 2:
Po prostu dodaj te linie
<item name="windowActionBar">false</item> <item name="windowNoTitle">true</item>
Twój plik stylu wygląda teraz tak
`
`
źródło
Rozwiązałem to, usuwając tę linię:
android:theme="@style/Theme.MyCompatTheme"
z właściwości aktywności w
Manifest file
źródło
Wystarczy umieścić
parent="Theme.AppCompat.NoActionBar"
plik style.xmlLubić -
<style parent="Theme.AppCompat.NoActionBar" name="AppTheme.NoActionBar">
źródło