使用 findViewById 初始化对象后直接出现 java.lang.NullPointerException

标签 java android nullpointerexception crash

这是一次奇怪的崩溃,因为该应用经过测试,发现可以在 5-6 部 Android 测试手机上顺利运行(没有任何错误),但 Play 商店报告在大约 2 个月内发生崩溃 session 百分比,太高了(Google 接受的最大百分比是 1.09%)。

NullPointerException 发生在应用程序的许多地方,没有任何逻辑原因,因为所有对象都是在类级别声明的,并且已在 onCreate 开始时初始化:

这只是众多示例之一:

btn_display_mode = findViewById(R.id.btn_display_mode);

.
.
(some code in the same class_
.
.
btn_display_mode.setOnClickListener(new View.OnClickListener() {    <---- java.lang.NullPointerException
    @Override
    public void onClick(View view) {
        updateDisplayMode(displayMode);
    }
});

这里是同样错误的另一个地方:

       mAdView = findViewById(R.id.adView);
       adRequest = new AdRequest.Builder().build();
       mAdView.loadAd(adRequest);                    <---- java.lang.NullPointerException


最佳答案

请尝试这样:

btn_display_mode = (Button)findViewById(R.id.btn_display_mode);

关于使用 findViewById 初始化对象后直接出现 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60379529/

相关文章:

JAVA - GUI 占位符

java - 有什么方法可以调用 aerospike 中的某些脚本或警报

java - Sockets C服务器,安卓客户端

java - 如何减少ArrayList未使用的容量

java - 为什么在java中使用map时出现空指针异常?

java - 为什么我的屏幕没有变红?

java - Play Framework 2-3 天后停止响应

android - 为什么定义 Flowable 我可以接收数据库的更新

java - 如何增加 Firebase 查询中 "limitToFirst"的限制?

java - 将参数传递给 JavascriptExecutor 的正确方法是什么?