android - 获取 ActionBar 时的 NullPointer
问题描述
我使用此 Q/A中的以下代码来更改 ActionBar 的背景颜色:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#000000")));
setContentView(R.layout.activity_main);
}
//More codes here
}
我知道我应该在使用getSupportActionBar()
时使用android.support.v7.app.ActionBarActivity
. 我不使用支持 v7。我在 andoridx 环境中工作,我已经导入了以下内容,但我不确定这些是否与问题有关:
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.app.ActionBar.setBackgroundDrawable(android.graphics.drawable.Drawable)”
解决方案
我通过如下设置环境解决了这个问题:
添加:
import static androidx.appcompat.app.AppCompatDelegate.FEATURE_SUPPORT_ACTION_BAR;
改变
extends Activity
至
extends AppCompatActivity
并通过以下方式转向支持包:
ActionBar bar = getSupportActionBar();
推荐阅读
- reactjs - Redux dispatch action,其值与相同
- javascript - Angular 函数中的路由
- javascript - 将特定范围复制到从一个工作表到另一个工作表中的第一个空行和特定列
- testing - 如何手动测试任务进度报告是否正确
- c++ - Cmake add_compile_definitions 但适用于所有目标
- gradle - 在 gradle 中,javaexec 和 JavaExec 任务之间有什么区别?
- swiftui - 如何在 SwiftUI 中使用绑定元素来更新 ForEach 而无需渲染所有 ForEach 数组?
- dymola - Dymola 将输出文件转换为 sdf - 不适用于大文件?
- arangodb - 简单 REPLACE_NTH 查询的内部 ArangoDB 错误
- javascript - 如何等待 useAuth useEffect 返回当前用户状态?