Android コールバック メソッドの実装
原理
インターフェイスは、それを実装するクラスを参照できます
インターフェースICallBackがあると仮定すると、MainActivityクラスはインターフェースICallBackを実装し、MainActivityの実装メソッドを参照する
CallBack には ICallBack への参照があり、ICallBack の参照を呼び出すのは MainActivity で実装メソッドを呼び出すことです
そして前提として、CallBack を MainActivity クラスに渡す必要があります。
匿名クラスを介して達成することもできます。
コード
インターフェース ICallBack
public interface ICallBack {
void onClick();
}
CallBack クラス
public class CallBack {
ICallBack callBack;
public void setCallBack(ICallBack callBack){
this.callBack = callBack;
}
public void callOnClick(){
if (callBack != null)
callBack.onClick();
}
}
クラス MainActivity を実装する
public class MainActivity extends AppCompatActivity implements ICallBack{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CallBack iCallBack = new CallBack();
iCallBack.setCallBack(this);
//这里通过匿名类接收回调
// iCallBack.setCallBack(new ICallBack() {
// @Override
// public void onClick() {
// Toast.makeText(MainActivity.this, "onClick"
// , Toast.LENGTH_SHORT).show();
// }
// });
iCallBack.callOnClick();
}
@Override
public void onClick() {
Toast.makeText(MainActivity.this, "onClick"
, Toast.LENGTH_SHORT).show();
}
}
## setCallback の実装は setOnClickListener に変換できます callOnClick() は onClick() と見なすことができます。つまり、onClick() メソッドを呼び出すとき、実際には OnClickListener クラスを実装する onClick() メソッドを呼び出しています。