基本的回调是如何实现的:
1、首先创建一个接口,这个接口用于你在某个情景下执行相应的操作方法。
2、创建一个功能类,比如这个类可以显示一个对话框、可以滑动菜 单、可以下载数据等等。
3、在这个类里面声明回调接口的对象
4、在这个类里面创建在某个情景下需要执行的方法,而且在这个方法里面为声明的接口对象赋 值。
5、在其他的类中使用这个功能类。
以自定义的Dialog为例,在构造这个自定义Dialog时,实现点击Dialog的按钮调用回调方法
1、创建
OnBtnClickListemer
接口
/** * Created by 张武 on 2016/2/24. */ public interface OnBtnClickListemer { public void OnOKBtnClick(); public void OnCancleBtnClick(); }
2、创建功能类,在功能类中声明接口对象,在功能类中的某个操作中调用接口对象的方法
/** * Created by 张武 on 2016/2/24. */ public class MyDialog extends Dialog { private Button okBtn; private Button cancleBtn; //接口对象 private OnBtnClickListemer mOnOKBtnClickListemer; //构造函数 public MyDialog(Context context, final OnBtnClickListemer onBtnClickListemer) { super(context); Window window = this.getWindow(); window.setContentView(R.layout.my_dailog_layout); okBtn=(Button)window.findViewById(R.id.ok_btn); cancleBtn=(Button)window.findViewById(R.id.cancle_btn); okBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBtnClickListemer.OnOKBtnClick();//接口对象的方法,需要在实例化MyDialog是实现该回调方法 } }); cancleBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); onBtnClickListemer.OnCancleBtnClick(); } }); this.show(); } }
3、在activity中构造自定义的Dialog
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ((Button)findViewById(R.id.tanchuang_btn)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final MyDialog mMyDialog=new MyDialog(MainActivity.this, new OnBtnClickListemer() { @Override public void OnOKBtnClick() { Toast.makeText(MainActivity.this,"我很开心",Toast.LENGTH_LONG).show(); } @Override public void OnCancleBtnClick() { } }); } }); } }