इस गतिविधि में पहले से ही विंडो सजावट द्वारा आपूर्ति की गई एक बार है


496

Toolbarएक्शन बार के बजाय उपयोग करने के लिए मेरे सामान पर जाने की कोशिश कर रहा हूं, लेकिन मैं एक त्रुटि कह रहा हूं

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)

तो मैंने अपनी शैली में अपनी गतिविधि के लिए कोई एक्शनबार नहीं जोड़ा

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

और विषय मेरे प्रकटन में सक्रियता पर लागू होता है

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

MainActivity GooglePlayServiceActivity को बढ़ाती है इसलिए मैंने वहां भी थीम सेट की है

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

लेकिन मुझे अभी भी त्रुटि मिलती है। मैं कहीं भी खिड़की सुविधा का अनुरोध नहीं करता हूं। किसी भी विचार क्यों मैं अभी भी यह?

जवाबों:


834

मुझे लगता है कि आप Android लॉलीपॉप के लिए विकसित कर रहे हैं, लेकिन वैसे भी इस लाइन में शामिल हैं:

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

आपके अंदर अपने विषय घोषणा के लिए app/src/main/res/values/styles.xml

इसके अलावा, यदि आप AppCompatActivityसंस्करण 22.1 या अधिक के समर्थन पुस्तकालय का उपयोग कर रहे हैं, तो इस पंक्ति को जोड़ें:

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

इन सभी परिवर्धन के बाद आपकी थीम घोषणा इस तरह दिख सकती है:

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

18
के windowActionBarरूप में ही नहीं है android:windowActionBar?
19

65
यह है, लेकिन AppCompat सामान ऐप नामस्थान विशेषता को देखता है न कि एंड्रॉइड एक। यह उन प्लेटफार्मों में भी विशेषता निर्दिष्ट करना संभव बनाता है जो मूल रूप से नहीं थे। यह है कि यह कैसे रंगप्रेमियों की तरह चीजों की वापसी के लिए अनुमति देता है।
येरियन

4
जब मैंने अपनी शैली में उस पंक्ति को ऐप क्रैश में जोड़ा :(
rkmax

9
इसके अलावा <item name = "windowNoTitle"> true </ item> जोड़ें। यदि आप 22.1 समर्थन लाइब्रेरी के बाद AppCompatActivity का उपयोग कर रहे हैं, तो stackoverflow.com/a/29853299/1402525
Nick

4
मेनिफ़ेस्ट फ़ाइल में एप्लिकेशन टैग में android: theme: "= @ style / AppTheme" जोड़ना न भूलें।
लाइव-लव

202

एक और आसान तरीका यह है कि आप अपने विषय को इस Theme.AppCompat.Light.NoActionBarतरह से बच्चा बनाएं :

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

मैंने इस तरीके को भी आजमाया लेकिन मुझे फिर भी त्रुटि मिली। हालाँकि, इससे पहले कि मैं अपने विषय को सेट कर सकता था GooglePlayServiceActivity, मुझे याद नहीं है
tyczj

1
हाँ, यह वही है जो मैं उपयोग कर रहा हूं। बस यह सुनिश्चित करें कि गतिविधि इस विषय को प्रकट में उपयोग कर रही है
MrEngineer13

6
मुझे यह समाधान @ नादिर बेलहज की तुलना में अधिक सुरुचिपूर्ण लगता है, हालांकि दोनों सही हैं।
वोगदेव

मुझे लगता है कि यह बेहतर जवाब है, इनलाइन XML विशेषता का उपयोग कर (windowActionBar = false) काम नहीं किया था - मैं @tyczj रूप में एक ही त्रुटि मिली
Booger

उस स्थिति में आप Theme.AppCompat.Light.DarkActionBar का उपयोग नहीं कर सकते हैं जो वास्तव में एक उपयोगी अभिभावक है।
f470071

125

एकल लाइन जोड़े android:theme="@style/AppTheme.NoActionBar"के लिए activityमें AndroidManifestऔर आपके द्वारा किए गए।


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>

52

टूलबार को एक्शन बार के रूप में उपयोग करने के लिए, पहले सजावट प्रदान की गई एक्शन बार को अक्षम करें।

सबसे आसान तरीका है कि आपके विषय का विस्तार हो

Theme.AppCompat.NoActionBar

(या इसका प्रकाश संस्करण)।

दूसरा, आमतौर पर अपने लेआउट 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” />

फिर अपनी गतिविधि या फ्रैगमेंट में, टूलबार को अपने एक्शन बार के रूप में कार्य करने के लिए सेट करें:

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

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

इस कोड ने मेरे लिए काम किया।


1
धन्यवाद! मैं <android.support.v7.widget.ToolbarXML में जोड़ना भूल गया ।
कूलमाइंड

1
मैं समझ नहीं पाया कि मेरा टूलबार का रंग सिर्फ खाली क्यों था। यह हरे रंग में बदलने के लिए पता लगाने के लिए नहीं कर सकता। मुझे यह मूर्खतापूर्ण लगता है कि मुझे जो कुछ भी करना था, उसे एंड्रॉइड: बैकग्राउंड = "" <android.support.v7.widget.Toolbar /> में लेआउट फ़ाइल में डाल दिया और उसने ऐसा किया! । धन्यवाद
एंड्रयू इरविन

21

यदि आप एक्शनबार और अन्य के साथ कुछ गतिविधियों को संयोजित करना चाहते हैं, तो आपको बेस थीम का उपयोग एक्शनबार सक्षम होना चाहिए और फिर एक उप विषय बनाना चाहिए जो आप उन गतिविधियों पर उपयोग करने वाले हैं जिन्हें एक्शनबार की आवश्यकता नहीं है

उदाहरण के लिए आप इस तरह से एक उप शैली का उपयोग कर सकते हैं

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

जबकि बेस थीम का कहना है

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

और फिर गतिविधि टैग के भीतर AndroidManifest फ़ाइल में गैर एक्शनबार थीम का उपयोग करें

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

आपको इसे प्रत्येक व्यक्तिगत गतिविधि पर लागू करना होगा, जिसमें एक्शनबार की आवश्यकता नहीं है, यदि आपकी परियोजना को गैर से कम एक्शन बार गतिविधियों की आवश्यकता है, तो इसे बेस थीम स्तर पर लागू करना बेहतर है


12

मैंने भी उसी समस्या का सामना किया। लेकिन मैंने इस्तेमाल किया:

getSupportActionBar().hide();

इससे पहले

setContentView(R.layout.activity_main);

अब यह काम कर रहा है।

और हम Style.xml में अन्य विकल्प आज़मा सकते हैं ,

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

8

इसे अपने मूल्यों / स्टाइल में जोड़ें। xml

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

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

</style>

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

</style>

और अपने मानों में निम्नलिखित कोड जोड़ें- v11 / styles.xml और मान-v14 / styl.xml

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

</style>

बस। यह काम करेगा।


6

आपको बदलने की जरूरत है

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

मेनिफ़ेस्ट में ये पंक्तियाँ। यह मेरे लिए पूरी तरह से काम करेगी।


5

अपनी परियोजना के 'style.xml' पर जाएं और WindowActionBar को असत्य बनाएं

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

13
जब आपका जवाब मेरे प्रश्न के प्रति सही नहीं है तो आप दूसरों की कैसे मदद कर रहे हैं
tyczj

"Theme.AppCompat.Light" का उपयोग करने के बजाय, "Theme.AppCompat.Light.NoActionBar" का उपयोग करें
क्रिस्टीना

4

Style.xml में स्थित अपने ऐप थीम में इस दो लाइन को जोड़ें: -

 <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

मैंने अपने xml में टूलबार जोड़ा था। तब मेरी गतिविधि में मैं यह कथन जोड़ रहा था:

setSupportActionBar(toolbar);

इसे हटाकर मेरे लिए काम किया। मुझे उम्मीद है कि यह किसी की मदद करता है।


अगर मैं इसे हटाना नहीं चाहता तो क्या होगा? यह ऐसी चीजें हैं जो टूलबार का उपयोग करती हैं।
श्रीकांत करुमनघाट

मैं इसके बारे में निश्चित नहीं हूं, लेकिन मुझे लगता है कि यह "setSupportActionBar (टूलबार);" टूलबार वहीं रहेगा।
हैरी। नईम

4

यदि आपको इस लाइन पर त्रुटि मिलती है:

setSupportActionBar(...);

आपको यह जांचने की आवश्यकता है कि क्या आपकी गतिविधि एक ऐसी थीम का उल्लेख कर रही है जिसमें एक टूलबार शामिल है। आपके एप्लिकेशन के AppTheme में पहले से ही एक टूलबार हो सकता है, जैसे कि

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

और आप एक दूसरे को जोड़ने की कोशिश कर रहे हैं। यदि आप अपने एप्लिकेशन के AppTheme का उपयोग करना चाहते हैं, तो आपको अपनी गतिविधि से थीम को प्रकट करने की आवश्यकता है।

उदाहरण के लिए:

<activity
    android:name=".ui.activities.SettingsActivity"
    android:theme="@style/AppTheme1" /> --> remove this theme

4

अपने एप्लिकेशन टैग के अंदर या अपने गतिविधि टैग के अंदर इसका उपयोग करें।

एंड्रॉयड: विषय = "@ शैली / AppTheme.NoActionBar"


3

यदि आप Appcompactगतिविधि का उपयोग कर रहे हैं तो अपने विषय में इन तीन पंक्तियों का उपयोग करें।

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

2

सीधे शब्दों में कहें, तो आप निम्न कार्य कर सकते हैं: -

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

इस तरह मैंने समस्या का समाधान किया। अपने में नीचे कोड जोड़ेंAndroidMainfest.xml

<activity android:name=".YourClass"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
 </activity>

1
उत्तम! साझा करने के लिए धन्यवाद।
संदीप योहन

1

या बस @ स्टाइल / अप्पेम बदलें

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">

यह मेरे लिए काम करता है!


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

    Change this to NoActionBar 

        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <!-- Customize your theme here. -->

        </style>

    This one worked for me

-1

दो सरल और त्वरित समाधान हैं

res -> मान -> शैलियों पर जाएं

आप इस वीडियो को और आसानी से देखने के लिए यहां क्लिक करें

समाधान 1:

आप एक्शन बार को हटाकर हटा सकते हैं

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

सेवा

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

Solution2:

बस इन लाइनों को जोड़ दें

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

तो अब आपकी स्टाइल फाइल इस तरह दिखती है

`

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

`


-2

मैंने इस लाइन को हटाकर इसे हल किया:

android:theme="@style/Theme.MyCompatTheme"

में गतिविधि गुणों से Manifest file


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.