【问题标题】:Android Show AlertDialog irrespective of the User Activity无论用户活动如何,Android 都显示 AlertDialog
【发布时间】:2017-12-24 09:14:58
【问题描述】:

我有三到四个活动

在第四个活动中,我正在向服务器发送数据并完成活动,用户可以处于前三个活动中的任何一个。

无论用户在哪个活动中,我都会向用户显示一个自定义警报对话框,询问如何处理从服务器获取的信息。

尝试 1:

AlertDialog.Builder alertDialogVar = new AlertDialog.Builder(this);
alertDialogVar.create().show();

尝试 2:

AlertDialog.Builder alertDialogVar = new AlertDialog.Builder(namActivity1.this);
alertDialogVar.create().show();

尝试 3:

AlertDialog.Builder alertDialogVar = new AlertDialog.Builder(getApplicationContext());
alertDialogVar.create().show();

尝试 4:

根据以下链接的建议,我什至尝试广播,但同样的错误

Displaying a AlertDialog on screen irrespective of Activity Screen

我收到一个错误,提示活动在尝试显示时已关闭:

错误:E/AndroidRuntime: FATAL EXCEPTION: main
进程:dijisuji.PicPac,PID:24381
android.view.WindowManager$BadTokenException: 无法添加窗口——令牌android.os.BinderProxy@3c152e1 无效;您的活动正在进行吗?
在 android.view.ViewRootImpl.setView(ViewRootImpl.java:580)
在 android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:310)
在 android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
在 android.app.Dialog.show(Dialog.java:319)

无论活动用户在哪里,我如何让它显示出来?

【问题讨论】:

  • 解决问题的一个简单方法是在从服务器发送请求时不要完成第四个活动。而是显示对话框并在对话框按钮上单击完成您的第四个活动并转到您喜欢的任何活动
  • 不,我不想让用户等待查看进度。他们可以继续查看其他活动中的内容
  • 好的,然后做一件事,您从 Intent 服务发出请求,一旦请求完成,就会显示来自该服务的对话框。

标签: java android android-activity android-alertdialog display


【解决方案1】:

一个非常简单的方法是创建一个 BaseActivity ,你的所有其他活动都会扩展,在这种情况下,你可以简单地使用 BaseActivity 的上下文而不用担心用户是哪个活动,因为它总是包含的实例当前活动。

class Act1 extends BaseActivity{}

class Act2 extends BaseActivity{}

class Act3 extends BaseActivity{}

class BaseActivity extends AppCompatActivity{
      public void showDialog(){
         AlertDialog.Builder alertDialogVar = new AlertDialog.Builder(BaseActivity.this);
         alertDialogVar.create().show();
      }
}

现在任何活动都可以调用这个 BaseActivity 的 showDialog() 方法。

【讨论】:

    【解决方案2】:

    每次您更改活动时,都会使用静态方法通知您的服务器通信类您所在的活动。并且只需使用通知的最后一个活动来显示您的对话框。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      相关资源
      最近更新 更多