wake-up-neo.net

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

Ich habe versucht, über mein Material zu navigieren, um Toolbar anstelle der Aktionsleiste zu verwenden, bekomme aber immer wieder eine Fehlermeldung

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)

also habe ich in meinem Stil hinzugefügt, dass meine Aktivität keine Aktionsleiste hat

<style name="AppCompatTheme" parent="@style/Theme.AppCompat.Light">
        <item name="Android:windowActionBar">false</item>
</style>

und das Thema bezieht sich auf Aktivitäten in meinem Manifest

<activity
        Android:name=".MainActivity"
        Android:windowSoftInputMode="adjustResize|stateHidden"
        Android:theme="@style/AppCompatTheme" Android:screenOrientation="portrait"/>

MainActivity erweitert GooglePlayServiceActivity, sodass ich dort auch das Thema einstelle

<activity
       Android:name=".GooglePlayServicesActivity"
       Android:label="@string/title_activity_google_play_services"
       Android:theme="@style/AppCompatTheme">

aber ich bekomme immer noch den fehler. Ich fordere auch nirgendwo eine Fensterfunktion an. irgendwelche ideen warum ich das noch bekomme?

463
tyczj

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

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

zu Ihrer Themendeklaration in Ihrem app/src/main/res/values/styles.xml.

Wenn Sie die Unterstützungsbibliothek AppCompatActivity der Version 22.1 oder höher verwenden, fügen Sie außerdem folgende Zeile hinzu:

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

Ihre Theme-Deklaration könnte nach all diesen Ergänzungen so aussehen:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <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>
</style>
771
Nadir Belhaj

Eine andere einfache Möglichkeit besteht darin, Ihr Thema zu einem Kind von Theme.AppCompat.Light.NoActionBar zu machen:

<style name="NoActionBarTheme" parent="Theme.AppCompat.Light.NoActionBar">
     ...
</style>
188
MrEngineer13

Fügen Sie eine einzelne Zeile Android:theme="@style/AppTheme.NoActionBar" zu activity in AndroidManifest hinzu, und fertig.


AndroidManifest.xml:

<activity Android:name=".activity.YourActivity"
          Android:theme="@style/AppTheme.NoActionBar"><!-- ADD THIS LINE -->

styles.xml

<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
</style>
117
Volodymyr Kulyk

Um die Symbolleiste als Aktionsleiste zu verwenden, deaktivieren Sie zunächst die vom Dekor bereitgestellte Aktionsleiste.

Am einfachsten ist es, Ihr Thema zu erweitern

Theme.AppCompat.NoActionBar

(oder seine leichte Variante).

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

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

Stellen Sie dann in Ihrer Aktivität oder Ihrem Fragment die Symbolleiste so ein, dass sie als Aktionsleiste fungiert:

@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 bei mir funktioniert.

52
V_J

Wenn Sie einige Aktivitäten mit der Aktionsleiste kombinieren möchten und andere nicht, sollten Sie das Basisthema verwenden, bei dem die Aktionsleiste aktiviert ist, und dann ein Unterthema erstellen, das Sie für Aktivitäten verwenden möchten, für die keine Aktionsleiste erforderlich ist

Zum Beispiel können Sie einen Sub-Style wie diesen verwenden

             <style name="AppTheme.NoActionBar">
               <item name="windowActionBar">false</item>
               <item name="windowNoTitle">true</item>
            </style>

Während das Basisthema erweitert sagen

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

und verwenden Sie dann das Nicht-Actionbar-Thema in der AndroidManifest-Datei im Aktivitäts-Tag say

   <activity
        Android:name="com.example.NonActionBarActivity"
        Android:theme="@style/AppTheme.NoActionBar"

Sie müssen dies auf jede einzelne Aktivität anwenden, die keine Aktionsleiste benötigt. Wenn Ihr Projekt also weniger Aktionen in der Aktionsleiste erfordert als nicht, ist es besser, dies auf der Ebene des Basisthemas anzuwenden.

20
Nasz Njoka Sr.

Ich hatte auch das gleiche Problem. Aber ich habe benutzt:

getSupportActionBar().hide();

vor

setContentView(R.layout.activity_main);

Jetzt funktioniert es.

Und wir können eine andere Option in Style.xml versuchen,

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
10
Thirumalvalavan

Fügen Sie dies in Ihrer Datei values ​​/ styles.xml hinzu

<style name="YourCustomTheme" parent="Theme.AppCompat.Light.NoActionBar">
</style>

<style name="AppBaseTheme" parent="YourCustomTheme">

</style>

<style name="AppTheme" parent="AppBaseTheme">

</style>

Fügen Sie den folgenden Code in die Dateien values-v11/styles.xml und values-v14/styles.xml ein

<style name="AppBaseTheme" parent="YourCustomTheme">

</style>

Das ist es. Es wird klappen.

8
Prabhakaran

Du musst dich ändern

  <activity
        Android:name=".YOUR ACTIVITY"
        Android:theme="@style/AppTheme.NoActionBar" />
</application>`

diese Zeilen im Manifest. Es wird perfekt für mich funktionieren.

6
S HemaNandhini

Wechseln Sie in die 'style.xml' Ihres Projekts und setzen Sie windowActionBar auf false

<style name="AppCompatTheme" parent="@style/Theme.AppCompat.Light">
        <item name="Android:windowActionBar">false</item>
</style>
5

Ich hatte Symbolleiste in meiner XML hinzugefügt. Dann habe ich in meiner Aktivität diese Anweisung hinzugefügt:

setSupportActionBar(toolbar);

Das Entfernen hat bei mir funktioniert. Ich hoffe es hilft jemandem.

4
Harry .Naeem

Fügen Sie diese zwei Zeilen in Ihr App-Design in style.xml ein: -

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    //Add this two line will fix your problem
    <item name="windowNoTitle">true</item>   <--1(this applies after 22.0.1 support library i think 
    <item name="windowActionBar">true</item> <--2
4
Kailash Dabhi

Wenn Sie den Fehler in dieser Zeile erhalten:

setSupportActionBar(...);

Sie müssen überprüfen, ob sich Ihre Aktivität auf ein Thema bezieht, das eine Symbolleiste enthält. Das AppTheme Ihrer Anwendung enthält möglicherweise bereits eine Symbolleiste, z

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

und Sie versuchen, eine zweite hinzuzufügen. Wenn Sie das AppTheme Ihrer Anwendung verwenden möchten, müssen Sie das Thema aus Ihrer Aktivität in der Datei manifest.xml entfernen.

Zum Beispiel:

<activity
    Android:name=".ui.activities.SettingsActivity"
    Android:theme="@style/AppTheme1" /> --> remove this theme
4
live-love

Wenn Sie die Aktivität Appcompact verwenden, verwenden Sie diese drei Zeilen in Ihrem Thema.

<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="Android:windowActionBarOverlay">false</item>
3

Einfach ausgedrückt, können Sie Folgendes tun:

if (Android.os.Build.VERSION.SDK_INT >= 21) {
        Window window = getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.setStatusBarColor(getResources().getColor(R.color.colorPrimaryDark));

    }
2
yash sachdeva

So habe ich das Problem gelöst. Füge folgenden Code in deinen AndroidMainfest.xml ein

<activity Android:name=".YourClass"
            Android:theme="@style/Theme.AppCompat.Light.NoActionBar">
 </activity>
2
John Joe

Verwenden Sie dies in Ihrem Anwendungs-Tag im Manifest oder in Ihrem Aktivitäts-Tag.

Android: theme = "@ style/AppTheme.NoActionBar"

0
Anirban