【问题标题】:Inter-fragment communication applied to Nested Fragments?应用于嵌套片段的片段间通信?
【发布时间】:2016-08-18 22:05:22
【问题描述】:

Android 开发者网站上有一个great article 介绍如何使用接口进行通信:

  1. Fragment 及其托管Activity
  2. 两个Fragments 由同一个Activity 托管

我正在努力将这个概念应用于嵌套片段。特别是,getActivity()Fragment#onAttach(Activity) 告诉您 Activity 正在托管 Fragment

嵌套片段的等价物是什么? “孩子”Fragment 如何知道它包含在什么“父母”Fragment 中?在不知道这一点的情况下,孩子Fragment 如何将事件传递给其父母Fragment

一个明显的方法是从子 Fragment 广播意图并让父 Fragment 收听广播,但我更愿意使用基于 interface 的方法。

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    事实证明,引入了一个getParentFragment() 方法来满足嵌套片段的需求。它在 API 17 的 android.app.Fragment 上可用,但可以在使用 android.support.v4.app.Fragment 的旧版本上使用。

    我不敢相信我忽略了这个 API!

    编辑:

    我遇到了this gist,它使找出父组件(无论是Fragment 还是Activity)的过程变得简单、优雅且安全!

    【讨论】:

    • 是的,如果一个片段在另一个片段中,那么 getParentFragment() 就是要走的路。如果你想让同层嵌套的片段相互交谈(即让 2 个子片段相互交谈),请使用 getTargetFragment() 和 setTargetFragment()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多