活动结束后显示AlertDialog

时间:2015-02-08 01:25:21

标签: java android callback android-alertdialog android-context

我习惯将this传递给任何采用Context的方法。如果我在内部班级,我会通过OuterClassName.this。这可能是不好的做法,但我从来没有找到我应该做的明确答案。

我有一个使用Volley加载一些JSON数据的活动,如果有错误,onError回调会显示一个Dialog(用OuterClassName.this构造为Context)。

但是,如果用户在发生错误时已离开该活动(按下后退按钮),则应用程序崩溃:

android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@422a88e8 is not valid; is your activity running?

当然,我的活动并非正在运行。但我还是想显示对话框。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:4)

按照设计,您的活动结束后不应显示任何Dialog。因此,在您的情况下,要停止弹出对话框窗口并避免BadTokenException,您可以尝试这样的事情:

if(!YourActivity.this.isFinishing()){
   //show dialog on error
}

但是,如果您仍然坚持弹出对话框,那么您可能会做的是:

if(!YourActivity.this.isFinishing()){
   //show dialog on error
}
else{
   //launch a new activity which should take care of error msg dialog
}

答案 1 :(得分:0)

  1. 传递OuterClass.this从内部类
  2. 有效
  3. 当Activity被杀死时,同样的视图不会活着。
  4. 如果您仍想在崩溃结束后显示一些对话框,我会说创建一个活动作为对话框并从应用程序上下文启动该活动。因此,即使您的主要活动已经死亡,此活动也会在一些后台流程后启动。 您可以使用parent="android:Theme.Dialog"作为主题来创建活动作为对话框