尝试调用虚拟方法:空对象引用
问题:
从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中文网其他相关文章!