#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. что именно вы хотите настроить, разве этот ответ не решил ваш сбой