gpt4 book ai didi

android - 如何防止 DialogFragment 在 Activity 恢复时被解散

转载 作者:行者123 更新时间:2023-11-30 02:45:56 31 4
gpt4 key购买 nike

我有一个 Activity,它会在 Activity 中发生事件时显示一个 DialogFragment。当我的应用程序运行时,用户可以按主页按钮使应用程序在后台运行。当应用程序在后台运行时,事件一发生, Activity 就应该显示 DialogFragment,这样当用户恢复应用程序时,对话框应该在 Activity 之上,但是我没有得到我想要的结果。一旦我从启动器图标或通知恢复应用程序,对话框就不会出现在 Activity 上。

这是我的 DialogFragment 类:

public static class MyDialog extends DialogFragment {

public static DialogInterface.OnClickListener mListener;
public static String mTitle, mBody;
public static boolean mConfirm;

public static MyDialog getInstance(String body, boolean confirm,
DialogInterface.OnClickListener listener) {
mListener = listener;
mTitle = "MyDialog";
mBody = body;
mConfirm = confirm;
MyDialog fragment = new MyDialog();
return fragment;
}

@Override
public Dialog onCreateDialog(Bundle savedIntanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setTitle(mTitle).setMessage(mBody)
.setPositiveButton("Ok", mListener);
if (mConfirm)
builder.setNegativeButton("Cancel", mListener);
return builder.create();
}
}

当 Activity 在前台时,对话框工作正常。这是我显示对话框的方式:

MyDialog.getInstance("This is dialog body text", true, 
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) {
// positive button pressed
}else //negative button pressed
}
}).show(getSupportFragmentManager(), "dialog");

我想要一个保留在 Activity 上的对话框,即使 Activity 在后台也是如此,并且一旦我恢复 Activity ,对话框就应该在 Activity 之上。我怎样才能实现这种行为?

最佳答案

您可以声明一个全局 bool 值来确定是否应该显示对话框。然后在您的 Activity onResume() 方法中,您根据 bool 值显示对话框。

如果用户完成与对话框的交互,您可以将此 bool 值设置为 false,这将导致它在您的 Activity 位于前台时不再显示 (onResume)。

关于android - 如何防止 DialogFragment 在 Activity 恢复时被解散,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25032074/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com