我有一个Activity
,当DialogFragment
中发生事件时,它会显示Activity
。当我的应用程序运行时,用户可以按“主页”按钮使该应用程序在后台运行。当应用程序在后台运行时,事件一旦发生,活动应显示DialogFragment
,以便用户恢复应用程序时,对话框应位于活动顶部,但是我没有得到想要的结果。从启动器图标或通知中恢复应用程序后,该对话框不会出现在活动中。
这是我的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();
}
}
当活动处于前台时,该对话框可以正常工作。
这是我显示对话框的方式:
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");
我希望对话框保持在活动中,即使该活动处于后台,并且在我继续活动时,该对话框也应该位于活动顶部。我该如何实现这种行为?
最佳答案
您可以声明一个全局布尔值,以确定是否应显示该对话框。然后,在活动onResume()
方法中,根据布尔值显示对话框。
如果用户与对话框的交互完成,则可以将此布尔值设置为false,这将导致当您的活动处于前台(onResume
)时不再显示该布尔值。
关于android - 恢复 Activity 后如何防止DialogFragment被解雇,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25032074/