兩個Fragment之間怎樣通訊?
阿新 • • 發佈:2019-02-06
首先明確一點:兩個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);
}
});