有些时候可能有这样的需求:一个fragment内容的改变需要通知另外一个fragment。
还是拿下图来说事:
我把按钮放到了TAB2上,希望得到这样的结果:点击TAB2上的保存按钮,TAB1的界面刷新一下或者有其他改变。
1、问题分析
谷歌的Android文档有云:所有的fragment之间的交流都是通过activity的,他们之间不可以直接通信。因此有了下面的通信过程:
2、代码实现
首先创建一个简单接口:
public interface OnDataChangeListener {
public void dataChange();
}
接着在我们的显示自定义TAB的activity中实现此接口:
@Override
public void dataChange() {
fragmentShow.dataChange();
} 在实现方法中我们调用TAB1的公共方法如上的dataChange(),这个方法具体做什么就由你自己决定了;
有了这些东西,我们就可以在TAB2按钮单击的时候去调用activity的dataChane()方法了:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
dataChangeListener = (OnDataChangeListener) activity;
} catch (Exception e) {
e.printStackTrace();
}
} 拿到dataChangeListener这个对象,然后调用其dataChange()方法即可。
3、参考:Communicating with Other Fragments
本文探讨如何在Android应用中实现两个Fragment间的通信,通过创建接口和在Activity中实现该接口来实现在一个Fragment的按钮点击触发另一个Fragment的内容变化。
484

被折叠的 条评论
为什么被折叠?



