Toolbar需要注意的小事项,Android深色主题下setSupportActionBar(toolbar)时程序闪退抛出异常

今天使用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过程中粗心大意遇到的问题,希望可以帮到和我遇到同样问题的人

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值