该活动已经有一个由窗口装饰提供的操作栏
试图移动我的东西来使用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">
但我仍然得到错误。 我也不要求任何地方的窗口function。 任何想法,为什么我仍然得到这个?
我认为你正在开发的Android棒棒糖,但无论如何,包括这一行:
<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>
在AndroidManifest
添加单行android:theme="@style/AppTheme.NoActionBar"
以完成activity
。
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创build一个工具栏实例:
<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); }
此代码为我工作。
如果您想将某些活动与操作栏和其他活动组合在一起,则应使用基本主题启用操作栏,然后创build一个子主题,以便在不需要操作栏的活动上使用它
例如,你可以使用这样的子风格
<style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style>
基本主题延伸说
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
然后在activity标签中使用AndroidManifest文件中的非操作栏主题
<activity android:name="com.example.NonActionBarActivity" android:theme="@style/AppTheme.NoActionBar"
您必须将其应用到不需要操作栏的每个单独活动,因此如果您的项目需要的操作栏活动less于非活动栏活动,则最好将其应用于基本主题级别
把这个添加到你的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>
而已。 它会工作。
转到您的项目的“style.xml”,并将windowActionBar设置为false
<style name="AppCompatTheme" parent="@style/Theme.AppCompat.Light"> <item name="android:windowActionBar">false</item> </style>
将这两行添加到位于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
你需要改变
<activity android:name=".YOUR ACTIVITY" android:theme="@style/AppTheme.NoActionBar" /> </application>`
在清单中的这些行,它将完全为我工作。
我也面临同样的问题。 但是我用了:
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>
我有工具栏添加在我的XML。 然后在我的活动中,我添加了这个声明:
setSupportActionBar(toolbar);
删除这个为我工作。 我希望它可以帮助别人。
如果您正在使用Appcompact
活动,请在您的主题中使用这三行。
<item name="windowNoTitle">true</item> <item name="windowActionBar">false</item> <item name="android:windowActionBarOverlay">false</item>
简而言之,你可以做到以下几点:
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)); }
这就是我解决问题的方法。 在你的AndroidMainfest.xml
添加下面的代码
<activity android:name=".YourClass" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> </activity>
另外一个较短版本的风格可以帮助:
<style name="YourActivityTheme" parent="Theme.AppCompat.NoActionBar"> ... </style>
我通过删除这一行来解决它:
android:theme="@style/Theme.MyCompatTheme"
从Manifest file
中的活动属性