在我的应用程序的一部分中,我向用户显示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?它怎么能实现呢?
我在文档中没有找到任何对此行为的引用,因此引用是一个加号。
答案 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()方法并在其中使用回调侦听器,它将回调父片段。
这些是我方的建议,希望它能得到任何线索。