了解错误:“尝试在空对象引用上调用虚拟方法 '...'”
尝试从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中文网其他相关文章!