5

我有一个 DatePickerDialog。在默认配置中它工作正常。

DatePickerDialog dialog = new DatePickerDialog(
    view.getContext(),
    new OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker picker, int year, int monthOfYear, int dayOfMonth) {
            // do something
        }
    },
    startDate.getYear(),
    startDate.getMonth() - 1,
    startDate.getDay()
);

在此处输入图像描述

现在我想更改按钮的文本。我尝试使用以下代码:

dialog.setButton(DatePickerDialog.BUTTON_POSITIVE, "New Label", new DialogInterface.OnClickListener() {

    public void onClick(DialogInterface dialog, int which) {
        // do something
    }
});

现在我的问题是从 datepicker 控件中获取日期。单击按钮不会调用 DateSetListener。如何通过 DateSetListener 获取日期?获取日期的另一种可能性是关于

public void onClick(DialogInterface dialog, int which) {
    int year = ((DatePickerDialog) dialog).getDatePicker().getYear();
    int month = ((DatePickerDialog) dialog).getDatePicker().getMonth();
    int day = ((DatePickerDialog) dialog).getDatePicker().getDayOfMonth();
}

但这似乎是一种不必要的复杂方式。

对于 TimePickerDialog,这种替代方式将不起作用,因为我找不到获取 timepicker 控件的方法。因此我需要使用 TimeSetListener 但我找不到可能性(比如日期选择器)。

感谢您的任何回复。

4

2 回答 2

8

我认为这将适用于 DatePicker,它适用于 TimePicker:

听者:

TimePickerDialog.OnTimeSetListener mTimeSetListenerIni =
                new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(android.widget.TimePicker view,
                            int hourOfDay, int minute) {
                        Log.i("","Initial: "+hourOfDay+":"+minute);
                    }
                };

TimePickerDialog yourFragment = new TimePickerDialog(this, mTimeSetListenerIni, hour, minute, true);
yourFragment.setButton(DialogInterface.BUTTON_POSITIVE, "OK", yourFragment);
yourFragment.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", yourFragment);
于 2013-05-16T09:40:06.517 回答
3

创建 DatePickerDialog 后,调用此行

datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Your custom text", datePickerDialog);

注意:只使用它的对话框而不使用新的点击监听器。

于 2016-04-10T16:04:50.133 回答