Эта активность уже имеет панель действий, предоставляемую декором окна
Попытка переместить мои вещи, чтобы использовать 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">
но я все еще получаю ошибку. Я также не запрашиваю функцию окна в любом месте. любые идеи, почему я все еще получаю это?
Ответы
Ответ 1
Я думаю, что вы разрабатываете для Android Lollipop, но в любом случае включите эту строку:
<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>
Ответ 2
Еще один простой способ - сделать вашу тему дочерним элементом Theme.AppCompat.Light.NoActionBar
следующим образом:
<style name="NoActionBarTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
</style>
Ответ 3
Добавьте одну строку 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>
Ответ 4
Чтобы использовать панель инструментов в качестве панели действий, сначала отключите панель действий, предоставленную декором.
Самый простой способ - продлить вашу тему от
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);
}
Этот код работал у меня.
Ответ 5
Если вы хотите объединить некоторые действия с панелью действий, а другие нет, вы должны использовать базовую тему, активированную панель действий, а затем создать подтекст, который вы собираетесь использовать для действий, для которых не требуется панель действий
Например, вы можете использовать вспомогательный стиль, подобный этому
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
Пока основная тема расширяет, скажите
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
а затем используйте тему non actionbar в файле AndroidManifest в теге активности:
<activity
android:name="com.example.NonActionBarActivity"
android:theme="@style/AppTheme.NoActionBar"
вы должны применить это к каждому отдельному действию, для которого не требуется панель действий, поэтому, если вашему проекту требуется меньше действий в действиях, чем не, тогда лучше применить это на базовом уровне темы
Ответ 6
У меня также была такая же проблема. Но я использовал:
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>
Ответ 7
Добавьте это в свои значения /styles.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 и values-v14/styles.xml
<style name="AppBaseTheme" parent="YourCustomTheme">
</style>
Вот оно. Он будет работать.
Ответ 8
Вам нужно изменить
<activity
android:name=".YOUR ACTIVITY"
android:theme="@style/AppTheme.NoActionBar" />
</application>`
эти строки в манифесте. Это отлично сработает для меня.
Ответ 9
Перейдите в "style.xml" вашего проекта и сделайте windowActionBar равным false
<style name="AppCompatTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:windowActionBar">false</item>
</style>
Ответ 10
Добавьте две строки в тему приложения, расположенную в файле 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
Ответ 11
У меня появилась панель инструментов в моем xml. Затем в моей деятельности я добавил это утверждение:
setSupportActionBar(toolbar);
Удаление этого сработало для меня. Надеюсь, это поможет кому-то.
Ответ 12
Если вы используете Appcompact
Действие, используйте эти три строки в своей теме.
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowActionBarOverlay">false</item>
Ответ 13
Вот как я решил проблему. Добавьте код ниже в AndroidMainfest.xml
<activity android:name=".YourClass"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
</activity>
Ответ 14
Проще говоря, вы можете сделать следующее: -
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));
}
Ответ 15
Если вы получите ошибку в этой строке:
setSupportActionBar(...);
Вам нужно проверить, относится ли ваша деятельность к теме, содержащей панель инструментов. Приложение AppTheme может содержать панель инструментов, например
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
и вы пытаетесь добавить второй. Если вы хотите использовать приложение AppTheme, вам нужно удалить тему из своей деятельности в файле manifest.xml.
Например:
<activity
android:name=".ui.activities.SettingsActivity"
android:theme="@style/AppTheme1" /> --> remove this theme
Ответ 16
Используйте это внутри тега приложения в манифесте или внутри тега Activity.
Android: тема = "@стиль/AppTheme.NoActionBar"
Ответ 17
Также может помочь более короткая версия стиля:
<style name="YourActivityTheme" parent="Theme.AppCompat.NoActionBar">
...
</style>
Ответ 18
Есть два простых и быстрых решения
перейти к 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>
'
Ответ 19
Я решил это, удалив эту строку:
android:theme="@style/Theme.MyCompatTheme"
из свойств активности в Manifest file
Ответ 20
Просто поставьте parent="Theme.AppCompat.NoActionBar"
в файле style.xml
Например - <style parent="Theme.AppCompat.NoActionBar" name="AppTheme.NoActionBar">