【问题标题】:fragment communications listener片段通信监听器
【发布时间】:2015-10-12 23:43:39
【问题描述】:

我得到了三个片段,它们都使用了相同的列表。

我想这样当列表发生变化时,它会将更改推送到片段。

我认为这会完成,从活动(接口)到实现片段内接口的三个片段(或侦听的片段)。

这不是正确的方法吗?

【问题讨论】:

  • 您的提议对我来说似乎是合理的首次设计尝试。你到底在问什么?
  • 好吧,我到处搜索,但我只看到片段到活动到片段的通信。所以我问这是否仍然正确,因为我试图这样做:活动片段S。

标签: android android-fragments communication


【解决方案1】:

由于您的 Activity 可以保存对其正在显示的片段的引用,因此只需包含一些将更新列表传递给客户端片段的方法就可以了,例如:

public class MyActivity extends FragmentActivity {

   private MyFragment fragment;

   //instantiate and show fragment at the correct time, save a reference to fragment

   public void onDataUpdate(List<Stuff> list) {
      fragment.updateList(list);
   }
}

您可以对需要跟踪数据当前状态的每个片段执行类似的操作。

【讨论】:

  • 我也可以使用片段管理器循环浏览片段然后更新它们,对吗?而不是声明一个片段的变量(MyFragment 片段)
  • 那也不错。但是,在这种情况下,您必须将其转换回您的班级,因为FragmentManagerfindFragment() 方法将返回普通的Fragments,而不是MyFragments。
  • 类似: CreateRoundfragmentTab createRoundfragmentTab = (CreateRoundfragmentTab) ((FragmentPageAdapter) mAdapter) .getFragment("CreateRoundfragmentTab"); ?
  • 是的,应该可以。关键是,ActivityFragment 的类签名等有信心来进行强制转换,而Fragment 不能依赖Activity 这就是为什么你看到用于反向通信的接口。
  • 啊刚刚注意到您使用常规方法(我缺乏良好的阅读能力),所以您的意思是片段的活动不需要接口 bt 方法,因为活动知道片段是谁?反之则意味着您需要使用接口,因为片段不知道其他片段?
猜你喜欢
  • 2019-05-27
  • 2014-08-07
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
相关资源
最近更新 更多