首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.NullPointerException在使用findViewById初始化对象后直接执行

java.lang.NullPointerException在使用findViewById初始化对象后直接执行
EN

Stack Overflow用户
提问于 2020-02-24 15:51:12
回答 2查看 44关注 0票数 0

这是一个奇怪的崩溃,因为这个应用程序在5-6 Android测试手机上被测试并发现运行顺利,(没有任何错误),但是游戏商店报告说大约有2%的会话崩溃,这太高了(谷歌接受的最大值是1.09%)。

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

这只是许多例子中的一个:

代码语言:javascript
复制
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);
    }
});

在这里,同样的错误出现在另一个地方:

代码语言:javascript
复制
       mAdView = findViewById(R.id.adView);
       adRequest = new AdRequest.Builder().build();
       mAdView.loadAd(adRequest);                    <---- java.lang.NullPointerException
EN

回答 2

Stack Overflow用户

发布于 2020-02-24 18:01:50

请这样试一试:

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

票数 0
EN

Stack Overflow用户

发布于 2020-02-26 18:55:29

多亏了格雷格。

造成这一问题的原因是,我决定使应用程序只在纵向方向运行,并在"onResume“中添加以下行,而不是"onCreate”

代码语言:javascript
复制
       //--------------------- 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 (土地)“的丰富的景观布局,我没有删除它,它没有包含"activity_main”中包含的所有对象。

我的错误是把这两行代码放在"onResume“的开头,而不是"onCreate”的开头,所以当应用程序以景观模式启动时,它会崩溃,因为它不会在"activity_main (陆地)“中找到所有的对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60379529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档