为什么setBackgroundDrawable()在传递对象时返回null,但是在使用匿名类时工作得很好



我想改变ActionBar的颜色。我用的是:

ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor(" #070b2e"));
getSupportActionBar().setBackgroundDrawable(colorDrawable);

程序崩溃并给出如下警告:

方法调用'setBackgroundDrawable'可能产生"NullPointerException">

但是当我写这个的时候,

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#070b2e")));

运行良好,应用程序不会崩溃,颜色改变了。然而,警告仍然存在。

首先,这不是一个匿名类,这只是使用ColorDrawable的对象,而不是将其存储在实例中。

警告说getSupportActionBar()可能为空,因此您需要为安全添加空检查。

if(getSupportActionBar() != null) {
...your code..
}

第一个代码的崩溃似乎是由"# 070 b2e"字符串-parseColor方法不做空间修剪

相关内容