显示DialogFragment时,调用片段不会暂停

时间:2015-09-17 10:31:14

标签: android android-fragments android-dialogfragment onpause

在我的应用程序的一部分中,我向用户显示ListView。当用户按下列表中的项目时,会显示DialogFragment

@Override
public void onClick() {
    android.support.v4.app.FragmentTransaction ft = getFragment().getFragmentManager().beginTransaction();
    ft.addToBackStack(null);
    SingleSettingDialogFragment dialog = SingleSettingDialogFragment.newInstance(...);
    dialog.show(ft, "Single");
}

DialogFragment具有以下结构:

@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
    super.onCreateDialog(savedInstanceSate);
    AlertDialog dialog =  new AlertDialog.Builder(...)
        ...
        .create();
    ...
    return dialog;
}

当用户退出DialogFragment时,我希望调用调用片段的onResume()方法,但不是。

那么DialogFragments有什么特别之处?为什么在显示对话框时暂停调用Fragment?它怎么能实现呢?

我在文档中没有找到任何对此行为的引用,因此引用是一个加号。

2 个答案:

答案 0 :(得分:1)

这可能会对您有所帮助:link

事实上,FragmentDialog本身不是一个活动,但它是包含调用片段的同一活动的一部分。 这意味着当显示dialogFragment时,片段不会暂停。

引用我给你的来源,片段在以下情况下暂停:另一个活动在前景并具有焦点,但此片段所在的活动仍然可见(前景活动部分透明或不是覆盖整个屏幕。)

希望有所帮助

答案 1 :(得分:1)

解决这个问题的一种方法是将DialogFragment嵌入到Activity中并将活动显示为Dialog,以下链接中的提示解释了如何:

http://developer.android.com/guide/topics/ui/dialogs.html

您可以使用它来更新底层Fragment,因为当Dialog(它是一个Activity)完成后,将在底层片段上调用onResume()。添加代码以更新onResume()方法中片段的状态,并且还有所有内容。

其他方法是你可以覆盖OnDismiss()方法并在其中使用回调侦听器,它将回调父片段。

这些是我方的建议,希望它能得到任何线索。