【问题标题】:How can I pass a listener from a Fragment to a DialogFragment?如何将侦听器从 Fragment 传递到 DialogFragment?
【发布时间】:2019-05-20 08:07:17
【问题描述】:

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

上下文

  • 我有一个片段(片段-A),其中有一个项目列表。 这个片段处理每个项目的动作。因为它可以访问演示者。
  • 我有一个 DialogFragment (Fragment-B),您可以在其中填写一些复选框并完成一个操作(该操作在实现此接口的 Fragment-A 中处理)
  • 我正在使用捆绑包来创建 DialogFragment。 (我不能将监听器作为参数传递)

我想要什么?

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

【问题讨论】:

  • 好吧,简而言之,使用实现 Parcelable 的接口,实现 tin Frag A(也覆盖 read 和 writeToParcel,无需在内部添加逻辑),然后在创建时通过 bundle 传递监听器(接口) DialogFrag 的实例,并在您的 Dialog Fragment 的 onCreate() 上接收它,
  • 可以查看this answer.

标签: android android-fragments android-dialogfragment android-mvp


【解决方案1】:

假设您的 DialogFragment 是另一个 Fragment 的子 Fragment(您将 getChildFragmentManager() 传递给 show()),那么您的 FragmentA 将得到一个回调到 onAttachFragment()

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

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

【讨论】:

  • 如果我在显示 DialogFragment 时退出应用程序并在应用程序不再在内存中返回应用程序时会发生什么情况?然后不会设置监听器。
  • 你会接到一个新的电话到onAttachFragment
猜你喜欢
  • 2014-02-15
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 2020-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
相关资源
最近更新 更多