首页 > Java > java教程 > 为什么我的 Android 应用程序在 Activity 导航期间因'尝试在空对象引用上调用虚拟方法 'android.view.Window$Callback android.view.Window.getCallback()'”而崩溃?

为什么我的 Android 应用程序在 Activity 导航期间因'尝试在空对象引用上调用虚拟方法 'android.view.Window$Callback android.view.Window.getCallback()'”而崩溃?

Mary-Kate Olsen
发布: 2024-12-05 03:42:17
原创
1010 人浏览过

Why Does My Android App Crash with

Android:“尝试在空对象引用上调用虚拟方法 'android.view.Window$Callback android.view.Window.getCallback()'”

从 SplashActivity 导航到 LoginActivity 时,应用程序崩溃并显示错误“尝试调用虚拟方法”空对象引用上的“android.view.Window$Callback android.view.Window.getCallback()”。”此错误通常在 Activity 完全初始化之前访问视图或执行 UI 相关操作时发生。

在这种情况下,该错误很可能是由以下问题引起的:

视图字段过早初始化:

在LoginActivity.java中,对usernameField、passwordField、error和progress字段进行声明并赋值在构造函数中。然而,访问这些字段时,Activity 的 onCreate() 方法尚未被调用,这意味着 setContentView() 尚未执行,视图层次结构尚未设置。因此,字段试图引用不存在的视图,从而导致空指针异常。

解决方案:

要解决此问题,需要仅在调用 setContentView() 后才初始化视图字段。这样可以确保视图层次结构完全初始化并且可访问。

LoginActivity.java 中更新的代码:

private EditText usernameField;
private EditText passwordField;
private TextView error;
private ProgressBar progress;

@Override
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 来控制从 SplashActivity 到 LoginActivity 的导航,以确保它发生在 UI 线程上。

更新后的代码SplashActivity.java:

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

以上是为什么我的 Android 应用程序在 Activity 导航期间因'尝试在空对象引用上调用虚拟方法 'android.view.Window$Callback android.view.Window.getCallback()'”而崩溃?的详细内容。更多信息请关注PHP中文网其他相关文章!

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