You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中Toolbar与状态栏颜色修改空指针异常问题求助

修复SharedPreference项目中的Toolbar空指针异常

从你给出的错误日志可以直接定位问题:mToolbar变量没有被初始化,当你在点击事件或者onCreate里调用mToolbar.setBackgroundColor()时,这个对象还是null,所以抛出了NullPointerException。

具体修复步骤:

  1. 初始化Toolbar变量
    在onCreate方法的setContentView(R.layout.activity_main);之后,添加Toolbar的绑定代码:

    mToolbar = (Toolbar) findViewById(R.id.your_toolbar_id);
    // 如果你需要把这个Toolbar作为Activity的ActionBar使用,加上下面这行
    setSupportActionBar(mToolbar);
    

    注意:这里的your_toolbar_id必须和你activity_main.xml布局文件中Toolbar控件的id完全一致,比如布局里Toolbar的id是@+id/toolbar,就写成R.id.toolbar。

  2. 确认布局文件中存在Toolbar控件
    检查activity_main.xml,确保里面有正确定义的Toolbar,示例如下:

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />
    

额外的小bug修复

我还注意到你在黄色按钮的点击事件里,调用storeColor时传错了颜色值——你传的是绿色的颜色值,应该改成黄色:

btnYellow.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        int yellowColor = getResources().getColor(R.color.colorYellow);
        mToolbar.setBackgroundColor(yellowColor);
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
            getWindow().setStatusBarColor(yellowColor);
        }
        storeColor(yellowColor); // 这里之前是colorGreen,现在修正为colorYellow
    }
});

做完以上修改后,空指针异常应该就解决了,同时黄色按钮的颜色保存逻辑也会正常工作。

内容的提问来源于stack exchange,提问作者Sahan Pasindu Nirmal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:02:18