天天看點

android接口回調的兩中簡單寫法android接口回調的兩中簡單寫法——B509小貼士

android接口回調的兩中簡單寫法——B509小貼士

一、第一種内部重寫(較簡單,常用異步)

(1)建立接口 ,并實作方法 (2)在擷取資料類中實作傳遞接口對象為參數的方法

(3)在主類中調用傳回資料方法 并傳遞接口對象,并重寫方法

1.首先建立一個 CallBack接口用來傳遞内容 如下

裡面實作兩個方法Success和Fail用來傳回資料

public  class MyInterface  {
  public  interface CallBack{
    void Success(String success);
    void Fail(String fail);
  }
}
           

2.其次寫好擷取資料的類BackData(可以叫做傳遞橋梁)

這裡面定義這個TransportContext方法用來接收參數也就是callBack對象

public class BackData {
/**
 * 效果就是第一次點選傳回成功第二次傳回失敗
 */
private static boolean isInternet;//模拟網絡情況

public static void TransportContext(MyInterface.CallBack callBack) {


    if (!isInternet) {
        callBack.Success("成功");

        isInternet = true;

    } else {
        callBack.Fail("失敗");
    }
  }
}
           

3.在主類中調用 傳遞方法(搭橋)定義一個CallBackActivity

調用TransportContext這個方法。傳遞callBack對象并重寫裡面的方法

public class CallBackActivity extends AppCompatActivity{
private TextView tv_callBack_click;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_call_back);
    tv_callBack_click = (TextView) findViewById(R.id.tv_callBack_click);
}
       //按鈕點選事件
public void onClick_callback(View view) {

    BackData.TransportContext(new MyInterface.CallBack() {
        //重寫接口方法 擷取資料
        @Override
        public void Success(String success) {
            tv_callBack_click.setText(success);
        }
        @Override
        public void Fail(String fail) {
            tv_callBack_click.setText(fail);
        }
    });

}
}
           

4.布局太簡單了就不貼出來了 貼一張效果圖

android接口回調的兩中簡單寫法android接口回調的兩中簡單寫法——B509小貼士
android接口回調的兩中簡單寫法android接口回調的兩中簡單寫法——B509小貼士

二、第二種 外部重寫方法 (其實本質相同)

步驟

1.建立接口并且實作裡面的方法

2.想把消息傳回哪(主類)在哪實作接口 并重寫方法

3.在主類中将上下文傳遞到另一個類中(實際也是接口對象)

4.用傳遞過來的接口對象調用接口裡的方法

5.再回調中擷取消息

1.接口跟上邊一樣

2.擷取資料方法也是一樣

3.主類

public class CallBackActivity extends AppCompatActivity implements MyInterface.CallBack {
private TextView tv_callBack_click;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_call_back);
    tv_callBack_click = (TextView) findViewById(R.id.tv_callBack_click);
}
 //按鈕點選事件
public void onClick_callback(View view) {
    //傳遞上下文
    BackData.TransportContext(this);
}

//外部重寫方法
@Override
public void Success(String success) {
    tv_callBack_click.setText(success);
}
@Override
public void Fail(String fail) {
    tv_callBack_click.setText(fail);
}
}
           

4.效果圖一樣,,就不貼了 希望有用

繼續閱讀