アクションバーの代わりに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">
しかし、私はまだエラーが出ます。私はまた窓の機能をどこにも要求しない。私はまだこれを得る理由は何かアイデア?
私はあなたが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>
もう一つの簡単な方法はあなたのテーマをTheme.AppCompat.Light.NoActionBar
の子にすることです。
<style name="NoActionBarTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
</style>
activity
のAndroidManifest
に単一行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>
ツールバーをアクションバーとして使用するには、まず装飾が提供するアクションバーを無効にします。
最も簡単な方法は、テーマを次のように拡張することです。
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);
}
このコードは私にとって役に立ちました。
一部のアクティビティをアクションバーと組み合わせたり、その他のアクティビティを組み合わせたりしたくない場合は、基本テーマであるアクションバーを有効にしてから、サブテーマを作成して、アクションバーを必要としないアクティビティで使用します。
例えば、あなたはこのようなサブスタイルを使うことができます
<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よりも少ない場合は、基本テーマレベルで適用するほうが良いでしょう
私も同じ問題に直面しました。しかし私は使用しました:
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>
これを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>
それでおしまい。それが動作します。
変更する必要があります
<activity
Android:name=".YOUR ACTIVITY"
Android:theme="@style/AppTheme.NoActionBar" />
</application>`
マニフェストのこれらの行。それは私のために完全に機能します。
プロジェクトの 'style.xml'に移動し、windowActionBarをfalseにします。
<style name="AppCompatTheme" parent="@style/Theme.AppCompat.Light">
<item name="Android:windowActionBar">false</item>
</style>
私のxmlにツールバーを追加しました。それから私の活動で私はこの文を追加していました:
setSupportActionBar(toolbar);
これを削除して私のために働いた。誰かに役立つことを願っています。
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
Appcompact
アクティビティを使用している場合は、この3行をテーマに使用してください。
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="Android:windowActionBarOverlay">false</item>
これが私が問題を解決した方法です。 AndroidMainfest.xml
に以下のコードを追加してください
<activity Android:name=".YourClass"
Android:theme="@style/Theme.AppCompat.Light.NoActionBar">
</activity>
簡単に言えば、あなたは以下をすることができます: -
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));
}
この行にエラーが出た場合:
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
マニフェスト内のapplicationタグ内またはActivityタグ内でこれを使用します。
Android:theme = "@ style/AppTheme.NoActionBar"