首页 > Java > java教程 > 为什么我的 Android 应用程序在转换活动时会崩溃并显示'尝试在空对象引用上调用虚拟方法...”?

为什么我的 Android 应用程序在转换活动时会崩溃并显示'尝试在空对象引用上调用虚拟方法...”?

Linda Hamilton
发布: 2024-12-05 15:22:10
原创
912 人浏览过

Why Does My Android App Crash with

尝试调用虚拟方法:空对象引用

问题:

从Android 应用程序中的 SplashActivity 到 LoginActivity 发生崩溃并出现以下错误: “尝试在空对象引用上调用虚拟方法 'android.view.Window$Callback android.view.Window.getCallback()'。”

说明:

发生异常是因为 LoginActivity 在活动完全初始化并准备好之前尝试访问视图(例如,EditText、TextView)。在 LoginActivity 的构造函数中调用了 findViewById(),但在 onCreate() 中未显式调用 setContentView(...)。

解决方案:

要解决此问题,之后在 onCreate() 中初始化视图字段setContentView(...):

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    usernameField = (EditText) findViewById(R.id.username);
    passwordField = (EditText) findViewById(R.id.password);
    error = (TextView) findViewById(R.id.error);
    progress = (ProgressBar) findViewById(R.id.progress);
}
登录后复制

优化建议:

考虑使用 Handler 而不是 Timer 来安排意图转换。 Timer 在后台线程上运行 TimerTask,在这种情况下应该避免这种情况。 Handler 将确保任务在 UI 线程上执行。

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        Intent intent = new Intent(SplashActivity.this, LoginActivity.class);
        startActivity(intent);
        finish();
    }
}, 1500);
登录后复制

以上是为什么我的 Android 应用程序在转换活动时会崩溃并显示'尝试在空对象引用上调用虚拟方法...”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板