Interface的兩種使用方式

接口是我們在編程中經常使用的,原來對於使用方式一直模模糊糊的,這兩天整理了一下。作爲菜鳥,有不對的地方請多多指教,不喜勿噴。

  1. 通過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");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章