【问题标题】:DatePicker: Listener reacting when clicking beside the ButtonDatePicker:侦听器在单击按钮旁边时做出反应
【发布时间】:2018-10-06 09:57:14
【问题描述】:

我的应用使用DatePicker。当我打开DatePicker 并单击Done 时,日期会被选中。问题是,如果用户点击DatePicker 之外的日期,也会选择日期。见这里:

Listener 只有在单击Done Button 时才会做出反应。但是,如果单击DatePicker 的周围(红色),它也会做出反应。

我的问题:
如何防止这种情况发生?

如果你想看一些代码,请发表评论。

我已经试过了: How to handle date picker dialog not to set in edittext when clicked outside of dialog android?

       Calendar c = Calendar.getInstance();
        mYear = c.get(Calendar.YEAR);
        mMonth = c.get(Calendar.MONTH);
        mDay = c.get(Calendar.DAY_OF_MONTH);

        //DatePickerDialog mDatePicker;
        DatePickerDialog mDatePicker;
        mDatePicker = new DatePickerDialog(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT, new DatePickerDialog.OnDateSetListener() {
            private boolean fired;
            public void resetFired(){
                fired = false;
            }
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                if(view.isShown()){
                    if(fired){
                        setDate(year, monthOfYear, dayOfMonth);
                        //ListView erneuern
                        adapter.notifyDataSetChanged();
                        return;
                    }
                    fired = true;
                }
            }
        }, mYear, mMonth, mDay);
        mDatePicker.setCanceledOnTouchOutside(true);
        mDatePicker.setTitle("Wähle ein Datum");
        mDatePicker.show();

但它不能正常工作。点击背景错误得到解决。但是现在Done Button 停止工作了。

【问题讨论】:

标签: java android datepicker listener


【解决方案1】:

一个包含 DatePicker 的简单对话框。 所以你可以设置为不可取消。

使用 setCancelable API

.setCancelable(false);

Dialog reference

【讨论】:

    猜你喜欢
    • 2015-07-31
    • 2019-07-05
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    相关资源
    最近更新 更多