Android多片段回调混乱

时间:2016-07-14 02:06:17

标签: android android-fragments

我正试图围绕从片段中移除事件并将事件发送到活动的顺序和过程。

我正在尝试只有一个FragmentA,它是一个项目列表,在按钮单击时转换到FragmentB,它会加载一个表单来添加一个新项目,然后当FragmentB完成表单时,将该项目添加到FragmentA列表。 (主要Arraylist存储在MainActivity中)。

基本上,我有一个MainActivity可以创建FragmentA(用项目填充列表)。我还有一个FragmentB(这是一个允许将项目添加到列表中的表单)。

我对此感到困惑的是如何正确设置回调。我理解如何使用一个片段(using thisthis tutorials)来实现回调,但我的困惑是:

哪个顺序是正确的(如果有的话)?

  1. MainActivity'创建'(转换)FragmentA,然后是FragmentA 过渡到FragmentB。 FragmentB然后发送回调(添加 一个新的项目)到FragmentA,FragmentA向MainActivity发出信号 将项添加到主列表(回调2)。然后是MainActivity 关闭FragmentB。 (我想把FragmentA打开)。

  2. MainActivity'创建'(转换)FragmentA,然后是FragmentA 过渡到FragmentB。 FragmentB然后发送回调(添加 一个新项目)到MainActivity。然后MainActivity关闭FragmentB和 将状态返回给FragmentA。

  3. MainActivity'创建'(转换)FragmentA,然后是MainActivity 当FragmentA发出回调信号以切换时,转换到FragmentB 片段(关闭fragmentA或将其添加到backstack)。 FragmentB 发送回调给MainActivity,MainActivity关闭FragmentB和 然后重新打开FragmentA。

  4. 希望我解释得还不错,但我知道这有点让我措辞混乱。

    修改

    最后一个问题,如果您有15个需要回调的不同片段,活动最终会“实现”15个不同的片段侦听器吗?看起来有点过分了。

    由于

1 个答案:

答案 0 :(得分:1)

只考虑Activity作为父亲,Fragment是他的孩子,他们依赖父亲,所以让孩子们表达他们的意愿,糖爸爸决定什么对他的爱人有好处!

这种方法的主要优点是代码的一致性和模块性,实际上它们有服务器 - 客户端关系,Fragment发送请求,任务由Activity完成,每个元素都在播放干净简单的角色。

不要担心必须实现的接口数量,但请记住Activity存在的原因所以您可以轻松实现应使用特定Fragment管理的Activity

BroadcastReceiverEventBus库是沟通的其他选择,但不是最好的选择!