web-dev-qa-db-ja.com

このアクティビティは既にウィンドウ装飾によって提供されたアクションバーを持っています

アクションバーの代わりに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">

しかし、私はまだエラーが出ます。私はまた窓の機能をどこにも要求しない。私はまだこれを得る理由は何かアイデア?

446
tyczj

私はあなたがAndroid Lollipopのために開発していると思いますが、とにかくこの行を含めます:

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

あなたのapp/src/main/res/values/styles.xmlの中のあなたのテーマ宣言に。

また、バージョン22.1以降のAppCompatActivityサポートライブラリを使用している場合は、次の行を追加してください。

<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>
741
Nadir Belhaj

もう一つの簡単な方法はあなたのテーマをTheme.AppCompat.Light.NoActionBarの子にすることです。

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

activityAndroidManifestに単一行Android:theme="@style/AppTheme.NoActionBar"を追加すれば完了です。


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>
111
Volodymyr Kulyk

ツールバーをアクションバーとして使用するには、まず装飾が提供するアクションバーを無効にします。

最も簡単な方法は、テーマを次のように拡張することです。

Theme.AppCompat.NoActionBar

(またはその軽い変種)。

次に、通常はレイアウトXMLを介してToolbarインスタンスを作成します。

<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);
}

このコードは私にとって役に立ちました。

50
V_J

一部のアクティビティをアクションバーと組み合わせたり、その他のアクティビティを組み合わせたりしたくない場合は、基本テーマであるアクションバーを有効にしてから、サブテーマを作成して、アクションバーを必要としないアクティビティで使用します。

例えば、あなたはこのようなサブスタイルを使うことができます

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

基本テーマは拡張しながら

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

次にアクティビティタグ内でAndroidManifestファイルのnon actionbarテーマを使用します

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

アクションバーを必要としない個々のアクティビティごとにこれを適用する必要があるため、プロジェクトで必要なアクションバーのアクティビティがnonよりも少ない場合は、基本テーマレベルで適用するほうが良いでしょう

19
Nasz Njoka Sr.

私も同じ問題に直面しました。しかし私は使用しました:

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

これをvalues/styles.xmlに追加してください。

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

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

</style>

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

</style>

そして、values-v11/styles.xmlとvalues-v14/styles.xmlに以下のコードを追加してください。

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

</style>

それでおしまい。それが動作します。

8
Prabhakaran

変更する必要があります

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

マニフェストのこれらの行。それは私のために完全に機能します。

6
S HemaNandhini

プロジェクトの 'style.xml'に移動し、windowActionBarをfalseにします。

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

私のxmlにツールバーを追加しました。それから私の活動で私はこの文を追加していました:

setSupportActionBar(toolbar);

これを削除して私のために働いた。誰かに役立つことを願っています。

4
Harry .Naeem

Style.xmlにあるアプリのテーマにこの2行を追加します -

 <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

Appcompactアクティビティを使用している場合は、この3行をテーマに使用してください。

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

これが私が問題を解決した方法です。 AndroidMainfest.xmlに以下のコードを追加してください

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

簡単に言えば、あなたは以下をすることができます: -

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

    }
1
yash sachdeva

この行にエラーが出た場合:

setSupportActionBar(...);

あなたの活動がツールバーを含むテーマを参照しているかどうかを確認する必要があります。アプリケーションのAppThemeには、すでに次のようなツールバーが含まれているかもしれません。

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

そしてあなたは2番目のものを追加しようとしています。アプリケーションのAppThemeを使用したい場合は、manifest.xmlファイルで、アクティビティからテーマを削除する必要があります。

例えば:

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

マニフェスト内のapplicationタグ内またはActivityタグ内でこれを使用します。

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

0
Anirban