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()方法