Android中Toolbar与状态栏颜色修改空指针异常问题求助
从你给出的错误日志可以直接定位问题:mToolbar变量没有被初始化,当你在点击事件或者onCreate里调用mToolbar.setBackgroundColor()时,这个对象还是null,所以抛出了NullPointerException。
具体修复步骤:
初始化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。确认布局文件中存在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
相关产品推荐
相关产品推荐

