Android 自定义的Dialog,点击确定按钮,让其根据条件判断消失与否

本文介绍了一种自定义Dialog的方法,使得在点击确认按钮时能够根据条件决定对话框是否关闭。通过重写dismiss方法实现逻辑控制,并给出具体实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义个Dialog,,但是点击确定按钮的时候,对话框会直接消失,这不符合我的需求,我需要在点击确定的时候,判断是否满足一定的条件,如果满足就让其消失,如果不满足,给个提示,但是对话框不消失,例如自定义的时间选择控件,如果选择的结束时间小于开始时间,给个提示,但是选择时间的这个Diolog,不让其消失。

很简单,重写dismiss方法即可。

  @Override
    public void dismiss() {
        if (notcanDis) {
            Toast.makeText(context,"结束时间不能小于开始时间",Toast.LENGTH_SHORT).show();
            notcanDis=false;//这里修改为false,是为了还原状态,为了保证按物理的返回键不会出现该提示
        } else {
            super.dismiss();
        }
    }

这个notcanDis这个变量是在点击确定的时候,判断是否满足条件来控制其是否为真。

 @Override
    public void onClick(DialogInterface dialog, int which) {
        switch (which) {
            case BUTTON_POSITIVE:
                if (mDateSetListener != null) {
                    int startYear = start_datePicker.getYear();
                    int startMoonth = start_datePicker.getMonth();
                    int startDay = start_datePicker.getDayOfMonth();
                    int endYear = end_datePicker.getYear();
                    int endMoonth = end_datePicker.getMonth();
                    int endDay = end_datePicker.getDayOfMonth();
                    Date start = new Date(startYear, startMoonth, startDay);
                    Date end = new Date(endYear, endMoonth, endDay);
                    if (end.getTime() < start.getTime()) {
                        notcanDis = true;
                    } else {
                        notcanDis = false;
                        start_datePicker.clearFocus();
                        end_datePicker.clearFocus();
                        mDateSetListener.onDateSet(startYear,
                                startMoonth, startDay, endYear,
                                endMoonth, endDay);
                    }
                }
                break;
            case BUTTON_NEGATIVE:
                cancel();
                break;
        }
    }

至此,就实现了我的需求。。。
每日一语录:
只要路是对的,就不要害怕它是短暂还是遥远,你终究会到达。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值