两个Fragment之间怎样通信?

时间:2022-05-05 20:15:22

 首先明确一点:两个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);
}
});