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.布局太簡單了就不貼出來了 貼一張效果圖
二、第二種 外部重寫方法 (其實本質相同)
步驟
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.效果圖一樣,,就不貼了 希望有用