如何在Android中为datepickers取消按钮设置监听器?

Ada*_*dam 8 android datepicker

我在Android中使用了一个datepicker让用户选择日期.我希望它做一件事,如果用户选择一个日期并设置它(我有那个工作正常)然后清除某个文本字段,如果用户按下datepicker上的取消按钮(打开datepicker但然后取消它).

我一直在努力的方法是做一个

private DatePickerDialog.OnCancelListener mDateCancelListener =
    new DatePickerDialog.OnCancelListener() {
        public void onCancel(DialogInterface dialog) {
            timeClear(); //method that clears text field
        }

    };
Run Code Online (Sandbox Code Playgroud)

那我呢

TimePickerDialog timeDialog = new TimePickerDialog(this,
  mTimeSetListener,
  c.get(Calendar.HOUR),
  c.get(Calendar.MINUTE),
  false);
timeDialog.setOnCancelListener(mTimeCancelListener);
Run Code Online (Sandbox Code Playgroud)

附加监听器.

我的问题是,如果用户按下后退按钮,则监听器工作,但如果他们按下取消按钮则不行.我尝试使用一个dismiss监听器,这是有效的,除了它即使我设置或取消datepicker也会消失!

当且仅当我在我的日期选择器上按下取消按钮时,我需要做什么让某些事情发生?

Eri*_*rch 5

反直觉的唯一解决方案是你需要"覆盖"取消按钮:

    timeDialog.setButton(DialogInterface.BUTTON_NEGATIVE,
            getString(R.string.cancel),
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    // do stuff
                }
            });
Run Code Online (Sandbox Code Playgroud)


cri*_*tis 0

尝试这个:

timeDialog.getButton(TimePickerDialog.BUTTON_NEGATIVE).setOnClickListener(mTimeCancelListener);
Run Code Online (Sandbox Code Playgroud)

(您必须更改 mTimeCancelListener 来实现DialogInterface.OnClickListener而不是OnCancelListener