【问题标题】:Calling "showDialog" from "onResume" throws runtime exception从“onResume”调用“showDialog”会引发运行时异常
【发布时间】:2012-03-06 08:15:41
【问题描述】:

我有启动“加载屏幕”活动的主要活动。当“加载屏幕”结束时,我需要显示一种闪屏,自然我选择了 Dialog 类来这样做。但是当我从onResume 调用showDialog 时,即使我从所有相关帖子中了解到这是正确的方法,应用程序也会失败。

谁能指出我正确的方向?

这是一个代码示例,如果有帮助的话:

    @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);
        }
    }

【问题讨论】:

  • 能发一下运行时异常的LogCat吗?
  • 03-06 10:33:17.625:WARN/WindowManager(516):尝试使用非应用程序令牌 WindowToken{409d6080 token=null} 添加窗口。中止。

标签: android android-activity dialog


【解决方案1】:

当您在对话框创建期间调用它时,似乎“getAppContext()”是一个空值。这记录在此线程中:Android: ProgressDialog.show() crashes with getApplicationContext

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

【讨论】:

  • Ahhhh 明白了,使用您的日志我发现当您调用显示对话框时“getAppContext()”可能为空,这在此线程中进行了讨论,还有一个 hack 可以解决这个问题:) stackoverflow.com/questions/1561803/…
  • 魔术师就是你!像魅力一样工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 1970-01-01
  • 2020-07-27
  • 2017-03-30
  • 2017-05-22
相关资源
最近更新 更多