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



这是一个奇怪的崩溃,因为该应用程序经过测试,在5-6部安卓测试手机上运行平稳(没有任何错误(,但Play商店报告在大约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

请这样尝试:

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

感谢Greg。。

出现问题的原因是,我决定让应用程序只在纵向方向上运行,并将以下行添加到"onResume"而不是"onCreate">

//--------------------- USE FULL SCREEN & KEEP SCREEN ON ------------------------
WindowManager.LayoutParams params = this.getWindow().getAttributes();
params.flags = WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;

同时,还有一个名为"activity_main(Land("的丰富景观布局,我没有删除它,它也没有包含"activity-main"中包含的所有对象。

我的错误是把这两行代码放在"onResume"的开头&不是在"onCreate"的开头,所以当应用程序以横向模式启动时,它会崩溃,因为它无法在"activity_main(Land("中找到所有对象

相关内容

最新更新