我有一个主要的活动,它会启动一个“加载屏幕”活动。当“加载屏幕”完成时,我需要显示一种启动画面,我自然选择了Dialog类。但是当我从showDialog
呼叫onResume
时,即使我从所有相关帖子中了解到这是正确的方法,应用程序也会失败。
有人能指出我正确的方向吗?
这是一个代码示例,如果它有帮助:
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_SPLASH:
promo = new PromoSplashScreen(getAppContext(), R.style.NoFrameNoBorderBoTitle);
promo.setCancelable(false);
promo.setImage(ApplicationData.config.splashImageURL);
return promo;
default:
return super.onCreateDialog(id);
}
}
@Override
protected void onResume() {
super.onResume();
if (ApplicationData.config == null) return;
if (ApplicationData.config.splashEnabled && !ApplicationData.config.splashPlayed && ApplicationData.config.splashImageURL != "") {
// Play splash screen
ApplicationData.config.splashPlayed = true;
showDialog(DIALOG_SPLASH);
}
}
答案 0 :(得分:2)
在对话框创建过程中调用它时,“getAppContext()”似乎是一个空值。这一点记录在这个帖子中:Android: ProgressDialog.show() crashes with getApplicationContext
为了解决这个问题,他们使用了一个hack,他们使用一个线程在恢复活动几毫秒后显示对话框。这样,getAppContext在调用时不为null。