android回调是怎么实现的? --以自定义Dialog为例
2016-02-25 19:43
441 查看
基本的回调是如何实现的:
1、首先创建一个接口,这个接口用于你在某个情景下执行相应的操作方法。
2、创建一个功能类,比如这个类可以显示一个对话框、可以滑动菜 单、可以下载数据等等。
3、在这个类里面声明回调接口的对象
4、在这个类里面创建在某个情景下需要执行的方法,而且在这个方法里面为声明的接口对象赋 值。
5、在其他的类中使用这个功能类。
以自定义的Dialog为例,在构造这个自定义Dialog时,实现点击Dialog的按钮调用回调方法
1、创建OnBtnClickListemer接口
2、创建功能类,在功能类中声明接口对象,在功能类中的某个操作中调用接口对象的方法
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() { } }); } }); } }
相关文章推荐
- Android【基础篇】
- Android KeyCode
- android studio 配置ndk方案
- android 图片的三级缓存
- Android逆向分析基础-Dalvik虚拟机
- Android进阶——安卓调用ESC/POS打印机打印
- android:使用gallery和imageSwitch制作可左右循环滑动的图片浏览器
- android的类很多,需要经常查看这些API
- android 常用的存储路径
- Android Studio生成APK自动追加版本号
- 【Android4.2系统源码】Activity学习
- 【Android常见问题】关于内存泄漏(二)
- android handler的内存泄露问题
- Android 命名规范和编码规范
- android studio 去掉无用资源
- Android 开发中遇到的坑
- Android Studio快速插入模板代码
- 图解Android - Zygote, System Server 启动分析
- 【Android】 解决listview和BaseAdapter配合因加入button导致整个item点击失效
- Android 6.0 运行时权限处理完全解析