我有三到四项 Activity
在第四个 Activity 中,我将数据发送到服务器并完成 Activity ,用户可以执行前三个行为中的任何一个。
无论用户处于哪个 Activity ,我都会向用户显示一个自定义警报对话框,询问如何处理从服务器获取的信息。
尝试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
我在尝试显示时收到错误消息,提示 Activity 已关闭:
Error : E/AndroidRuntime: FATAL EXCEPTION: main
Process: dijisuji.PicPac, PID: 24381
android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@3c152e1 is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:580)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:310)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
at android.app.Dialog.show(Dialog.java:319)
无论活跃用户位于何处,如何使其显示?
最佳答案
一个非常简单的方法是创建一个 BaseActivity,所有其他 Activity 都将扩展它,在这种情况下,您可以简单地使用 BaseActivity 的上下文,而不必担心用户所在的 Activity ,因为它将始终包含以下实例当前 Activity 。
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();
}
}
现在任何 Activity 都可以调用此 BaseActivity 的 showDialog() 方法。
关于java - Android 显示 AlertDialog,无论用户 Activity 如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45184802/