安卓 java。使用findViewById初始化对象后直接执行lang.NullPointerException
这是一个奇怪的崩溃,因为该应用程序在5-6部Android测试手机上测试并发现运行平稳(没有任何错误),但Play store报告在大约2%的会话中出现崩溃,这太高了(谷歌接受的最大值为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
# 1 楼答案
请像这样尝试:
btn_display_mode = (Button)findViewById(R.id.btn_display_mode);
# 2 楼答案
多亏了格雷格
出现问题的原因是,我决定让应用程序只以纵向运行,并在“onResume”中添加了以下几行,而不是“onCreate”
同时,有一个丰富的景观布局,名为“活动区(土地)”,我没有删除它,它并不包含“活动区(土地)”中包含的所有对象
我的错误是把这两行代码放在“onResume”的开头;不是在“onCreate”的开头,所以当应用程序以横向模式启动时,它会崩溃,因为它无法在“activity_main(Land)”中找到所有对象