从MainActivity刷新片段视图

时间:2014-03-08 04:58:51

标签: android android-fragments

所以我目前有一个有4个标签(片段)的应用程序。它们按顺序是片段A,B,C,D。

片段A是第一个打开的视图(与B一起,因为viewPager在当前视图之前和之后加载视图)。

当我单击片段A中的按钮时,它会将数据发送回MainActivity,然后将该数据发送到片段B和C。

然而,这是问题发挥作用的地方。由于片段B已被调用,因此一旦我单击按钮并发送数据,View就不会更新,但片段C是因为以前没有调用过该视图。

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

你可以通过几种方式做到这一点。

  1. 只需将数据设置为片段并让其更新其视图

  2. 即可
  3. 让所有像B和C这样的片段自己注册以接收来自MainActivity的数据,当MainActivity获取数据集时,告诉所有已注册的接收者新数据

  4. 重新创建片段

  5. 使用事件总线并告知所有新数据和MainActivity的子程序,片段B会收到新数据的通知。片段C将在MainActivity

  6. 创建时获取其数据

    我认为这个清单是无穷无尽的。

    这里的关键是片段需要从actvitiy获取数据以及活动更新。在这种情况下,您需要从onCreateView和自己的updateUI()函数中断UI更新行为。然后可以从onCreateView调用updateUI(MyData),并在片段上的setMyData()中调用。只需确保检查setMyData中的isAdded标志。

    这几乎说明了一切: http://developer.android.com/training/basics/fragments/communicating.html

答案 1 :(得分:1)

我使用了一个简单的片段通信器,它允许活动调用片段,并且片段与活动对话。

您可以根据在活动中调用方法,使用新数据更改视图。我这样做的方法是在活动中设置片段然后将它们传递给页面适配器,这样我就可以调用片段中的方法并在片段上实现fragmentcommunicator接口。

如果你愿意,你可以诚实地避免使用界面,但是如果要在所有片段中包含相同的方法来与它们交谈,那么这是最简单的方法。

如果您显示代码,我可以向您展示一个简单的示例。