এই ক্রিয়াকলাপটিতে ইতিমধ্যে উইন্ডো সজ্জা দ্বারা সরবরাহ করা একটি অ্যাকশন বার রয়েছে


496

Toolbarঅ্যাকশন বারের পরিবর্তে আমার স্টাফটি ব্যবহার করার চেষ্টা করছে তবে আমি ত্রুটি করে বলছি keep

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

মেইনএক্টিভিটি গুগলপ্লে সার্ভিসঅ্যাক্টিভিটি প্রসারিত করে তাই আমি সেখানে থিমটিও সেট করেছিলাম

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

তবে আমি তবুও ত্রুটি পেয়েছি। আমি উইন্ডো বৈশিষ্ট্যটি কোথাও অনুরোধ করি না। আমি এখনও কেন এই সম্পর্কে কোন ধারণা?

উত্তর:


834

আমি মনে করি আপনি অ্যান্ড্রয়েড ললিপপের জন্য বিকাশ করছেন তবে যাইহোক এই লাইনটি অন্তর্ভুক্ত করুন:

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

আপনার থিমের ঘোষণায় আপনার app/src/main/res/values/styles.xml

এছাড়াও, আপনি যদি AppCompatActivity22.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?
tyczj

65
এটি হ'ল, তবে অ্যাপকম্প্যাট স্টাফটি অ্যান্ড্রয়েডের নয় বরং অ্যাপ্লিকেশনটির নেমস্পেসের অ্যাট্রিবিউটের দিকে নজর দেয়। এটি প্ল্যাটফর্মগুলিতে এমনকি এটির বৈশিষ্ট্য নির্দিষ্ট করা সম্ভব করে যা মূলত এটি ছিল না। এটি কীভাবে রঙিনপ্রিমারির মতো জিনিসগুলির ব্যাকপোর্টিংয়ের অনুমতি দেয়।
ইয়ারিয়ান

4
আমি যখন আমার শৈলীতে সেই লাইনটি যুক্ত করেছি তখন অ্যাপটি ক্র্যাশ করে :(
rkmax

9
এছাড়াও আপনি AppCompatActivity ব্যবহার করেন, তাহলে <আইটেমের নাম = "windowNoTitle"> সত্য </ আইটেমটি> যোগ করার পরে 22.1 সমর্থন গ্রন্থাগার stackoverflow.com/a/29853299/1402525
নিক

4
ম্যানিফেস্ট ফাইলটিতে অ্যাপ্লিকেশন ট্যাগে: অ্যান্ড্রয়েড: থিম = "@ স্টাইল / অ্যাপপ্লেম" যুক্ত করতে ভুলবেন না।
লাইভ-লাভ

202

আর একটি সহজ উপায় হ'ল আপনার থিমটিকে এমন একটি শিশু হিসাবে Theme.AppCompat.Light.NoActionBarতৈরি করা:

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

আমি এই পদ্ধতিটিও চেষ্টা করেছিলাম কিন্তু তবুও ত্রুটিটি পেয়েছি। তবে থিমটি আমার এ সেট করার আগে এটি হতে পারে তবে GooglePlayServiceActivityআমি মনে করি না
tyczj

1
হ্যাঁ, এটি আমি ব্যবহার করছি। কেবল নিশ্চিত হয়ে নিন যে ক্রিয়াকলাপটি ম্যানিফেস্টে এই থিমটি ব্যবহার করছে
MrEngineer13

6
আমি এই সমাধানটি @ নাদির বেলহাজের একের চেয়ে আরও মার্জিত বলে মনে করি, যদিও উভয়ই সঠিক।
ভোগদেভ

আমি মনে করি এটিই উত্তম উত্তর, ইনলাইন এক্সএমএল অ্যাট্রিবিউট (উইন্ডোঅ্যাকশনবার = মিথ্যা) ব্যবহার করে কাজ হয়নি - আমি @tyczj এর মতোই ত্রুটি পেয়েছি
বুগার

সেক্ষেত্রে আপনি থিম.এপকম্প্যাট.লাইট.ডর্ক অ্যাকশনবার ব্যবহার করতে পারবেন না যা প্রকৃতপক্ষে একটি কার্যকর পিতা-মাতা।
f470071

125

একক লাইন যোগ করুন android:theme="@style/AppTheme.NoActionBar"থেকে activityAndroidManifestএবং আপনার কাজ সম্পন্ন করেছি।


অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল :

<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.Toolbarএক্সএমএল যুক্ত করতে ভুলে গেছি ।
কুলমাইন্ড

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

এবং তারপরে ক্রিয়াকলাপের মধ্যে অ্যান্ড্রয়েড ম্যানিফেস্ট ফাইলটিতে অ অ্যাকশনবার থিমটি ব্যবহার করুন

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

আপনার অবশ্যই প্রতিটি পৃথক ক্রিয়াকলাপে এটি প্রয়োগ করতে হবে যাতে অ্যাকশনবারের প্রয়োজন হয় না তাই যদি আপনার প্রকল্পের তুলনায় অ্যাকশন বারের চেয়ে কম ক্রিয়াকলাপ প্রয়োজন হয় তবে এটি বেস থিম স্তরে প্রয়োগ করা ভাল better


12

আমিও একই সমস্যার মুখোমুখি হয়েছি। তবে আমি ব্যবহার করেছি:

getSupportActionBar().hide();

আগে

setContentView(R.layout.activity_main);

এখন এটি কাজ করছে।

এবং আমরা স্টাইল.এক্সএমএলে অন্য বিকল্পগুলি চেষ্টা করতে পারি ,

<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 / styles.xML এ নিম্নলিখিত কোড যুক্ত করুন

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

</style>

এটাই. এটা কাজ করবে।


6

তোমাকে বদলাতে হবে

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

ম্যানিফেস্টে এই লাইনগুলি। এটি আমার পক্ষে নিখুঁতভাবে কাজ করবে।


5

আপনার প্রকল্পের 'style.xML' এ যান এবং উইন্ডোঅ্যাকশনবারটিকে মিথ্যা করুন

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

13
আপনার প্রশ্নের উত্তর আমার প্রশ্নের সঠিক না হলে আপনি কীভাবে অন্যকে সহায়তা করছেন
tyczj

"থিম.এপকম্প্যাট.লাইট" ব্যবহার না করে "থিম.এপকম্প্যাট.লাইট.নো অ্যাকশনবার" ব্যবহার করুন
ক্রিস্টিনা

4

স্টাইল.এক্সএমএলে অবস্থিত আপনার অ্যাপ থিমটিতে এই দুটি লাইন যুক্ত করুন: -

 <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

আমার এক্সএমএলটিতে আমার সরঞ্জামদণ্ড যুক্ত হয়েছিল। তারপরে আমার ক্রিয়াকলাপে আমি এই বিবৃতিটি যুক্ত করছি:

setSupportActionBar(toolbar);

এটি সরানো আমার পক্ষে কাজ করেছে। আমি আশা করি এটি কাউকে সাহায্য করবে


আমি যদি এটি সরাতে না চাই তবে কী হবে? এটি এমন কিছু জিনিস যা সরঞ্জামদণ্ডটি ব্যবহার করে।
শ্রীকান্ত করুণাঘাট

আমি এটি সম্পর্কে নিশ্চিত নই, তবে আমার মনে হয় এই "সেটসপোর্টএ্যাকশনবার (সরঞ্জামদণ্ড)" মুছে ফেলা হচ্ছে; " টুলবারটি সেখানেই থাকবে।
হ্যারি .নিম

4

আপনি যদি এই লাইনে ত্রুটিটি পান:

setSupportActionBar(...);

আপনার ক্রিয়াকলাপটি কোনও সরঞ্জামদণ্ডে থাকা কোনও থিমের উল্লেখ করছে কিনা তা আপনাকে পরীক্ষা করতে হবে। আপনার অ্যাপ্লিকেশনটির অ্যাপ থিমটিতে ইতিমধ্যে কোনও সরঞ্জামদণ্ড থাকতে পারে

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

এবং আপনি দ্বিতীয়টি যুক্ত করার চেষ্টা করছেন। আপনি যদি আপনার অ্যাপ্লিকেশনটির অ্যাপপ্লেম ব্যবহার করতে চান তবে আপনাকে ম্যানিফেস্ট.এক্সএমএল ফাইলে আপনার ক্রিয়াকলাপ থেকে থিমটি সরিয়ে ফেলতে হবে।

উদাহরণ স্বরূপ:

<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

দুটি সহজ এবং দ্রুত সমাধান রয়েছে

পুনরায় -> মান -> শৈলীতে যান

আপনি আরও স্বাচ্ছন্দ্যের জন্য এই ভিডিওটি দেখতে পারেন এখানে ক্লিক করুন

সমাধান 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


-2

স্রেফ parent="Theme.AppCompat.NoActionBar"আপনার স্টাইল.এক্সএমএল ফাইলটি রেখে দিন

পছন্দ - <style parent="Theme.AppCompat.NoActionBar" name="AppTheme.NoActionBar">

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.