有些时候可能有这样的需求:一个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