今天使用androidX包下面的Toolbar时,我在Activity的onCreate方法下直接使用
setSupportActionBar(toolbar);
环境:andorid Api32(Android12),主题使用的是NoActionBar的
在不开启深色模式的时候,程序能正常使用。开启深色模式时,抛出异常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.按照这个提示,我在theme下面添加了:
<item name="windowActionBar">false</item>
添加完了,深色模式还是异常,查询一翻,无果,基本都是让我修改主题,但是我本来使用的就是NoActionBar的主题
然后我就打印深色模式下的getSupportActionBar的结果,发现一个问题,深色模式的时候,他已经有了actionbar了,然后我就以下代码暂时让程序不抛异常了:
if (getSupportActionBar() == null) {
setSupportActionBar(toolbar);
} else {
toolbar.setVisibility(View.GONE);
}
为什么要setVisibility,一件很呆的事就是他有了actionbar,然后我们自己布局里面的ToolBar就直接很呆的的放在那里了。
然后接下来我发现一件很蠢的事就是,以上这些纯属瞎折腾,完全没必要,我的android studio版本是2021.2.1的
选择项目视图
然后就可以很清晰的看到app/src/main/res/下面有两个文件夹,这都是Android studio自己生成的,其中一个values-night。。。。限定符-night一看就是深色模式用的,这个里面的主题没有修改成NoActionBar的。
当然也可以在AndroidManifest里面不把android:theme的属性指定为这个由ide自己生成的主题。
嗯 还有一个事要注意,使用androidx包下的Toolbar,你的Activity就得继承AppCompatActivity。
记录一下使用Toolbar过程中粗心大意遇到的问题,希望可以帮到和我遇到同样问题的人