597 Stimmen

Diese Aktivität verfügt bereits über eine Aktionsleiste, die vom Fensterdekor bereitgestellt wird.

Trying to move over my stuff to use Toolbar instead of Action Bar but I keep getting an error saying

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tyczj.weddingalbum/com.xxx.xxx.MainActivity}: java.lang.IllegalStateException: Diese Activity hat bereits eine Action Bar, die vom Fensterdekor bereitgestellt wird. Fordern Sie nicht Window.FEATURE_ACTION_BAR an und setzen Sie windowActionBar in Ihrem Theme auf false, um stattdessen eine Toolbar zu verwenden.
            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: Diese Activity hat bereits eine Action Bar, die vom Fensterdekor bereitgestellt wird. Fordern Sie nicht Window.FEATURE_ACTION_BAR an und setzen Sie windowActionBar in Ihrem Theme auf false, um stattdessen eine Toolbar zu verwenden.
            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)

so habe ich meinem Stil für meine Aktivität hinzugefügt, um keine Actionbar zu haben

        <item name="android:windowActionBar">false</item>

und das Thema wird auf Aktivitäten in meinem Manifest angewendet

MainActivity erweitert GooglePlayServiceActivity, also habe ich das Thema auch dort festgelegt

aber ich bekomme immer noch den Fehler. Ich fordere auch nirgendwo die Fensterfunktion an. Irgendwelche Ideen, warum ich das immer noch bekomme?

960voto

Nadir Belhaj Punkte 11634

Ich denke, du entwickelst für Android Lollipop, aber füge auf jeden Fall diese Zeile hinzu:

false 

zu deiner Themen-Deklaration innerhalb deiner app/src/main/res/values/styles.xml.

Außerdem, wenn du die AppCompatActivity Support-Bibliothek der Version 22.1 oder höher verwendest, füge diese Zeile hinzu:

true

Deine Themen-Deklaration könnte nach all diesen Ergänzungen so aussehen:

    <!-- Passe dein Thema hier an. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>

221voto

MrEngineer13 Punkte 38472

Ein weiterer einfacher Weg ist es, Ihr Thema als Kind von Theme.AppCompat.Light.NoActionBar zu erstellen, wie folgt:

     ...

155voto

Volodymyr Kulyk Punkte 6231

Fügen Sie die einzelne Zeile android:theme="@style/AppTheme.NoActionBar" zu activity in AndroidManifest hinzu und Sie sind fertig.


AndroidManifest.xml:


styles.xml

        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>

57voto

V_J Punkte 1081

Um die Toolbar als Aktionsleiste zu verwenden, deaktivieren Sie zuerst die Aktionsleiste, die vom Dekor bereitgestellt wird.

Der einfachste Weg ist, dass Ihr Theme von

Theme.AppCompat.NoActionBar

(oder seiner hellen Variante) erweitert.

Zweitens erstellen Sie eine Toolbar-Instanz, normalerweise über Ihr Layout-XML:

Dann setzen Sie in Ihrer Activity oder Ihrem Fragment die Toolbar als Ihre Aktionsleiste:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.blah);

    Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
    setSupportActionBar(toolbar);
}

Dieser Code hat für mich funktioniert.

24voto

Nasz Njoka Sr. Punkte 1096

Wenn Sie einige Aktivitäten mit ActionBar kombinieren möchten und andere nicht, sollten Sie das Basisthema mit ActionBar aktiviert verwenden und dann ein Untertehma erstellen, das Sie für Aktivitäten verwenden, die keinen ActionBar benötigen

Zum Beispiel können Sie ein Untertehma wie dieses verwenden

               <item name="windowActionBar">false</item>
               <item name="windowNoTitle">true</item>

Während das Basisthema beispielsweise erweitert wird

</code></pre>

<p>und dann das Nicht-ActionBar-Thema in der AndroidManifest-Datei innerhalb des activity-Tags verwenden</p>

<pre><code>   <activity
        android:name="com.example.NonActionBarActivity"
        android:theme="@style/AppTheme.NoActionBar"
</code></pre>

<p><strong>Sie müssen dies auf jede einzelne Aktivität anwenden, die keinen ActionBar benötigt. Wenn Ihr Projekt weniger ActionBar-Aktivitäten als Nicht-ActionBar-Aktivitäten erfordert, ist es besser, dies auf der Basisebene des Themas anzuwenden</strong></p></x-turndown>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X