DatePicker:单击按钮旁边的侦听器做出反应

时间:2018-10-06 09:57:15

标签: java android datepicker listener

我的应用使用了DatePicker。当我打开DatePicker并单击Done时,将选择日期。问题是,如果用户单击DatePicker以外的日期,则日期也会被选择。看到这里:

enter image description here

仅在单击ListenerDone 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停止工作了。

1 个答案:

答案 0 :(得分:2)

包含DatePicker的简单对话框。 因此,您可以设置为不可取消。

使用setCancelable API

.setCancelable(false);

Dialog reference