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

为什么我的 Android 应用程序在 Activity 之间导航时会崩溃并显示'尝试在空对象引用上调用虚拟方法 '...'”?

Patricia Arquette
发布: 2024-12-11 17:48:17
原创
620 人浏览过

Why Does My Android App Crash with

了解错误:“尝试在空对象引用上调用虚拟方法 '...'”

尝试从SplashActivity 到 LoginActivity,应用程序崩溃并显示以下内容错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
登录后复制

问题的根本原因:

该错误表明对 Java 对象的引用返回 null,从而阻止执行以下操作:需要一个有效的对象。在本例中,它涉及 LoginActivity.java 代码中视图元素的初始化。

解决方案:

解决方案在于在引用之前正确初始化视图元素它们在代码中。提供的答案正确地指出在 onCreate() 之外初始化视图元素可能会导致空引用。

要解决此问题,请在 LoginActivity.java 中声明视图字段而不进行初始化,如下所示如下:

private EditText usernameField, passwordField;
private TextView error;
private ProgressBar progress;
登录后复制

然后,为 onCreate() 中的字段赋值方法:

@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 线程上执行,避免潜在问题并确保更流畅的用户体验。

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

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