在我的应用程序的一个部分中,我向用户显示了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有什么特别之处呢?为什么对话框显示时调用片段没有暂停?如何实现呢?
我在文档中没有找到任何关于这种行为的引用,所以引用是一个加号。
3条答案
按热度按时间vwhgwdsa1#
这可以帮助您:链接
事实上,FragmentDialog本身并不是一个Activity,而是包含调用片段的同一Activity的一部分。这意味着当显示dialogFragment时片段没有暂停。
引用我给你的源代码,一个片段在以下情况下暂停:另一个Activity位于前台并具有焦点,但该片段所在的Activity仍然可见(前台Activity部分透明或未覆盖整个屏幕)。
希望能帮上忙
4zcjmb1e2#
处理此问题的一种方法是将您的DialogFragment嵌入到Activity中,并将Activity显示为Dialog,以下链接中有一个技巧说明了如何操作:
http://developer.android.com/guide/topics/ui/dialogs.html
您可以使用它来更新底层的Fragment,因为当Dialog(它是一个Activity)完成时,将在底层的Fragment上调用onResume()。在onResume()方法中添加代码来更新片段的状态,这就是它的全部内容。
另一种方法是可以覆盖OnDismiss()方法并在其中使用回调侦听器,该侦听器将回调父片段。
以上是我这边的建议,希望能得到任何线索.
kyxcudwk3#
打开
DialogFragment
或BottomSheetDialogFragment
时,调用片段的onPause
和onResume
方法不会被调用。要处理这个问题,你可以使用
FragmentLifecycleCallbacks
:1-创建FragmentLifecycleCallbacks(inner)类:
字符串
2-在onCreate()上注册:
型
总代码:
型