Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将侦听器从片段传递到DialogFragment?_Android_Android Fragments_Android Dialogfragment_Android Mvp - Fatal编程技术网

Android 如何将侦听器从片段传递到DialogFragment?

Android 如何将侦听器从片段传递到DialogFragment?,android,android-fragments,android-dialogfragment,android-mvp,Android,Android Fragments,Android Dialogfragment,Android Mvp,我目前正在一个单一的活动应用程序中工作,该应用程序为每个屏幕使用片段。我也在使用MVP设计模式 上下文 我有一个片段(Fragment-a),其中有一个项目列表。 此片段处理每个项的操作。因为它可以访问演示者 我有一个DialogFragment(Fragment-B),您可以在其中填写一些复选框并完成一个操作(这是在Fragment-a中处理的操作,它实现了一个接口) 我正在使用一个包来创建DialogFragment。(我无法将侦听器作为参数传递) 我想要什么? 如何将Fragment-

我目前正在一个单一的活动应用程序中工作,该应用程序为每个屏幕使用片段。我也在使用MVP设计模式

上下文

  • 我有一个片段(Fragment-a),其中有一个项目列表。 此片段处理每个项的操作。因为它可以访问演示者
  • 我有一个DialogFragment(Fragment-B),您可以在其中填写一些复选框并完成一个操作(这是在Fragment-a中处理的操作,它实现了一个接口)
  • 我正在使用一个包来创建DialogFragment。(我无法将侦听器作为参数传递)
我想要什么?


如何将Fragment-A作为侦听器传递给DialogFragment(Fragment-B),以便从DialogFragment调用操作?

假设您的
DialogFragment
是另一个片段的子片段(您将
getChildFragmentManager()
传递给
show()
),然后您的
FragmentA
将得到一个回调:

当片段作为该片段的子片段附加时调用


这为您提供了对子DialogFragment的引用,您可以在其中设置所需的任何侦听器。

如果在显示DialogFragment并在应用程序不再位于内存中后返回应用程序时退出应用程序,会发生什么情况?此时将不会设置侦听器。您将获得对
onAttachFragment
的新调用。好的,简而言之,使用一个实现Parcelable的接口,实现tin Frag a(也覆盖读写包,不需要在内部添加逻辑),然后在创建DialogFrag实例时通过捆绑包传递侦听器(接口),并在对话框frugment的onCreate()上接收它,