【问题标题】:Can a Fragment be the central hub for other Fragment?一个 Fragment 可以成为其他 Fragment 的中心枢纽吗?
【发布时间】:2019-09-19 21:02:05
【问题描述】:

我正在重构一个较旧的应用程序,它有一个片段需要被切割成更小的片段。主要片段是一步一步的,报告问题页面。它的构建带有一个对下一个按钮做出反应的视图翻转器,并通过 Retrofit 获取数据。为什么他们选择让片段表现得像一个活动对我来说很奇怪。

示例
第 1 页“什么是问题页面主题”
第 2 页“所选主题​​有什么问题”
第 3 页“评论问题”
第4页“发送每页输入的问题数据(片段)”

我的问题是我不知道如何通过底层片段进行片段到片段的通信,因为我只能在网上找到片段之间的活动。 (视图模型和接口)。

我是否需要创建一个新的活动来成为片段和通信的持有者,或者有没有办法处理当前片段。

更新
我意识到该应用程序使用导航抽屉来导航我想用活动替换的片段,据我所知,使用导航抽屉和活动是不好的做法。所以我的问题又来了。

如果我使用导航抽屉导航到Fragment_A,并且在那个片段中,我将每个步骤分成更小的片段,例如Fragment_A1Fragment_A2 等等。我如何在他们之间进行交流。 Fragment_A2 怎么知道int 我从Fragment_A1 的列表中选择了什么。

应该导航到Fragment_A1,而不是导航抽屉导航到Fragment_A

我可能遗漏了一些明显的东西。

【问题讨论】:

  • 如果fragmentA想要和fragmentB通信,它应该使用底层的activity作为通信通道。我建议您创建一个ViewModel,将其附加到活动并在片段中检索它。
  • 也是我要去的地方,感谢您的反馈

标签: android android-fragments


【解决方案1】:

片段之间的通信有多种方式。仅举几例:

  1. 使用活动和界面作为中介
  2. 使用目标片段概念(如果您将第 2 页作为片段,那么为了与第 1 页进行通信,您可以通过 setTargetFragment 将第 1 页片段作为目标片段传递
  3. 使用偶数巴士(例如 otto)
  4. 使用本地广播和接收器
  5. 使用共享视图模型

...? :)

我建议使用 p5 (https://developer.android.com/topic/libraries/architecture/viewmodel.html#sharing)

【讨论】:

  • 也是我的想法,似乎是最好的选择
猜你喜欢
  • 2019-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
相关资源
最近更新 更多