首先明确一点:两个Fragment之间不能直接通信,只能通过它们所寄生的Activity作为桥梁进行通信。
场景假设:我们假设A这个Activity里面有F1,F2两个Fragment。F1里面是新闻列表, F2里面是新闻详情,点击F1的某一条,要让F2相应的发生改变。
那具体怎么实现呢?分两步:
1. 在F1里面定义接口,A里面实现接口。通过回调实现F1与其父亲A的通信。
2. 在A接口回调方法里与F2通信,将参数传给F2。
实现代码:
F1的关键代码:
public interface OnArticleClickedListener {
public void onArticleSelected(int position);
}
setOnArticleClickedListener(OnArticleClickedListener listener){
this.listener = listener;
}
public void onListItemClick(ListView l, View v, int position, long id) {
this.listener.onArticleSelected(position);
}
A的关键代码:
f1.setOnArticleClickedListener(new F1.OnArticleClickedListener(){
onArticleSelected(int position){
//调用f2的方法,与进行通信
f2.showArticleDetail(position);
}
});