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

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

Linda Hamilton
Linda Hamilton原创
2024-12-05 15:22:10889浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn