首页 > Java > java教程 > 为什么在访问 LoginActivity 中的视图时出现 NullPointerException?

为什么在访问 LoginActivity 中的视图时出现 NullPointerException?

Linda Hamilton
发布: 2024-12-07 01:43:12
原创
911 人浏览过

Why Am I Getting a NullPointerException When Accessing Views in My LoginActivity?

NullPointerException:尝试从未初始化的窗口检索回调

从 SplashActivity 导航到 LoginActivity 时,应用程序遇到错误:

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

这个错误表明LoginActivity正在尝试在正确初始化之前访问视图组件。

原因

错误的具体原因在于 LoginActivity.java 代码中,其中类成员在 onCreate() 中调用 setContentView() 之前初始化。这会导致类成员尝试查找视图时视图尚不存在的情况。

解决方案

要解决此问题,请在以下位置声明视图成员没有初始化的类:

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

然后,在 setContentView() 之后在 onCreate() 中初始化成员称为:

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);
}
登录后复制

其他建议

虽然与错误没有直接关系,但建议在 UI 线程上运行任务时将 Timer 替换为 Handler:

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

以上是为什么在访问 LoginActivity 中的视图时出现 NullPointerException?的详细内容。更多信息请关注PHP中文网其他相关文章!

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