从“onResume”调用“showDialog”会引发运行时异常

时间:2012-03-06 08:15:41

标签: android android-activity dialog

我有一个主要的活动,它会启动一个“加载屏幕”活动。当“加载屏幕”完成时,我需要显示一种启动画面,我自然选择了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);
        }
    }

1 个答案:

答案 0 :(得分:2)

在对话框创建过程中调用它时,“getAppContext()”似乎是一个空值。这一点记录在这个帖子中:Android: ProgressDialog.show() crashes with getApplicationContext

为了解决这个问题,他们使用了一个hack,他们使用一个线程在恢复活动几毫秒后显示对话框。这样,getAppContext在调用时不为null。