Эта активность уже имеет панель действий, предоставляемую декором окна

Попытка переместить мои вещи, чтобы использовать 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">