结合Dialog的onClick()事件理解Android中的回调函数三部曲

本文通过分析Android Dialog的onClick事件,探讨如何使用回调函数来处理不同Dialog的点击事件。作者创建了一个BaseDialog类,并定义了一个回调接口,以避免重复编写相似的Dialog代码。回调函数的概念在自定义控件和事件处理中非常常见,通过这种方式可以更好地理解回调函数的设计思想。
摘要由CSDN通过智能技术生成

App都少不了的一个需求,那就是Dialog弹窗,而且通常一个应用中都不止一个Dialog弹窗,多的时候可能达到六七个,那么你是否会为你的应用重复写六七个弹窗:ExitLoginDialog、DownDialog、UpdateDialog……如果是使用系统的Dialog还好,可以直接new一个就行了,但是如果有自定义的需求呢?比如这样:

ExitLoginDialog

UpdateDialog

乍一看只用一点点文字的区别,可是如果不使用回调机制,那么你该如何控制弹窗的点击事件呢?很明显点击第一个弹窗(ExitLoginDialog)的事件对应为退出登录,而点击第二个弹窗(UpdateDialog)则会新建应用升级任务。最笨的方法是这样:分别写两个差不多的Dialog,找到各自的btnSure(确认按钮),然后各自设置为:

ExitLoginDialog中:

btnSure.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            //此处为执行退出登录代码
            }
        });
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

UpdateDialog中:

btnSure.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            //此处为执行升级app代码
            }
        });
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

实现没有问题,但从代码设计上肯定是有问题的,我们发现这两个类主要的逻辑中只有点击确认后执行的操作是不同的,其他逻辑几乎相同,所以我们就思考是不是可以将Dialog写成一个类,然后对外提供一个方法,当确认按钮点击onClick()执行的时候执行我们自己设置的方法。那么这就是事件回调的思想的了:当一个事件执行的时候,我们希望能自己定义一个函数来执行不同的操作,这个函数就是回调函数,它会在某个事件执行之后回调执行。

注意:Android系统本身的onClick(),onPause()等就是回调函数,当手指点击的时候回调onClick()函数,当Activity界面隐藏的时候回调onPause()函数。

下面我们以事件回调的方法实现以上逻辑。

事件回调设置三部曲:

1.定义回调事件的接口 
2.声明回调事件 
3.对外提供设置事件回调的接口

PS:我们新建了一个继承自Dialog的类,命名为BaseDialog,接口回调定义在该类中!

按照以上步骤,首先我们定义回调事件接口:

public interface OnDialogClickListener{
   
        void onSureClickListener();     //当点击了确认按钮之后执行
        void onCancelClickListener();   //当点击了取消按钮之后执行(取消操作通常都是弹窗消失)
    }
 
 
 
  • 1
  • 2
  • 3
  • 4

接口定义好了,我们很明显能看到里面两个函数的意思,那就是当点击了取消按钮后执行的操作和点击了确认按钮后执行的操作,哪里调用呢?当然是点击了相应按钮的时候了!但是我们还没有实例来调用,所以我们执行步骤2先声明一个:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值