java.lang.Исключение IllegalStateException: у Activity уже есть панель действий, предоставленная оформлением окна.Окно запроса Donot.FEATURE_SUPPORT_ACTION_BAR

#java #android #android-studio #navigation

#java #Android #android-studio #навигация

Вопрос:

Я добавляю боковую навигацию на панель управления моего приложения, и при этом я добавил пользовательскую панель инструментов в файл макета панели управления.

Код панели инструментов XML-файла —

 <androidx.appcompat.widget.Toolbar
            android:id="@ id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#00FFFFFF"
            android:minHeight="?attr/actionBarSize"
            android:theme="?attr/actionBarTheme"
            app:navigationIcon="@drawable/menu_toolbar"/>
  

Код Java —

 /*---------------HOOKS--------------*/
        drawerLayout = findViewById(R.id.drawer_layout);
        navigationView = findViewById(R.id.nav_view2);
        toolbar = findViewById(R.id.toolbar);

        /*------------------Tool Bar-----------------------*/
        setSupportActionBar(toolbar);
        /*---------------Navigation Drawer Menu--------------*/
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawerLayout.addDrawerListener(toggle);
        toggle.syncState();
  

во время запуска приложение завершает работу, и в logcat отображается следующее сообщение об ошибке —

 2020-10-17 16:49:52.568 24803-24803/com.example.bottomnav E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.bottomnav, PID: 24803
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bottomnav/com.example.bottomnav.ClientBottomNav}: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3311)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3460)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2047)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:224)
        at android.app.ActivityThread.main(ActivityThread.java:7592)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
     Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
        at androidx.appcompat.app.AppCompatDelegateImpl.setSupportActionBar(AppCompatDelegateImpl.java:572)
        at androidx.appcompat.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:159)
        at com.example.bottomnav.ClientBottomNav.onCreate(ClientBottomNav.java:60)
        at android.app.Activity.performCreate(Activity.java:7893)
        at android.app.Activity.performCreate(Activity.java:7880)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3286)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3460) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2047) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:224) 
        at android.app.ActivityThread.main(ActivityThread.java:7592) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950 

Я думаю, что по умолчанию есть панель действий, и у нее возникли некоторые проблемы с новой панелью инструментов, что можно сделать для решения этой проблемы?

Ответ №1:

поскольку ошибка описывает себя

Вызвано: java.lang.Исключение IllegalStateException: у этого действия уже есть панель действий, предоставленная оформлением окна. Не запрашивать окно.FEATURE_SUPPORT_ACTION_BAR и установите для windowActionBar значение false в вашей теме, чтобы вместо этого использовать панель инструментов.

итак, у вашей activity уже есть actionBar , и вы предоставляете ее, чтобы решить эту проблему, сделайте вашу тему расширенной родительской темой, у которой нет actionBar или установите ваше actionBar значение false, как показано ниже

 <style name="AppTheme" parent="your parent theme here" //>
    <!-- Customize your theme here. -->
    .....
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/gray_dark_bg</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item> // this is the required option
    .....

</style>
  

Комментарии:

1. Можете ли вы подсказать мне, как настроить тему?

2. что именно вы хотите настроить, разве этот ответ не решил ваш сбой