接口是我們在編程中經常使用的,原來對於使用方式一直模模糊糊的,這兩天整理了一下。作爲菜鳥,有不對的地方請多多指教,不喜勿噴。
通過set方法進行傳遞。
例如把Fragment裏的值傳遞到Avtivity的情況。這樣可以直接在Fragment調用接口方法。代碼如下:
1.首先定義了一個接口
public interface TextViewInfoListener {
void textViewInfo(String info);
}
2.然後在Fragment中聲明一下,並且寫一個set方法,這樣在Activity中擁有這個Fragment的實例,是可以直接進行set的。
private TextViewInfoListener tvInfoListener;
public void setTvInfoListener(TextViewInfoListener tvInfoListener) {
this.tvInfoListener = tvInfoListener;
}
3.在Activty中set之後,這個接口其實已經是Activity中的。可以直接進行調用。
@Override
public void onClick(View arg0) {
switch (arg0.getId()) {
case R.id.frg_one_btn1 :
tvInfoListener.textViewInfo("按鈕A");
break;
case R.id.frg_one_btn2 :
tvInfoListener.textViewInfo("按鈕B");
break;
}
}
4.這是Activity中聲明fragment,並且進行set的地方。set完成後當你在fragment中進行調用的使用,這裏就能收到消息。
Frg_one fragmentInterface = new Frg_one();
fragmentInterface.setTvInfoListener(new TextViewInfoListener() {
@Override
public void textViewInfo(String info) {
main_tv1.setText(typeInfoOne);
}
});
2.Activity向Fragment中傳值:
在Fragment方法上直接進行實現,並重寫實現方法。
首先需要一個接口:
public interface ButtonInfoListener {
void buttonInfo(String info1, String info2);
}
然後在fragment上實現。
public class Frg_one extends Fragment implements ButtonInfoListener {
@Override
public void buttonInfo(String info1, String info2) {
}
}
最後在Activity中調用。
Frg_one fragmentInterface = new Frg_one();
fragmentInterface.buttonInfo("1","2");