1

我有一个日期选择器,我想交换设置和取消按钮。

当我尝试时,两个按钮都只能用于设置。

如何避免这种情况和互换按钮。

这是我的代码。

@Override
    protected Dialog onCreateDialog(int id) {
        Calendar c = Calendar.getInstance();
        int cyear = c.get(Calendar.YEAR);
        int cmonth = c.get(Calendar.MONTH);
        int cday = c.get(Calendar.DAY_OF_MONTH);
        switch (id) {
        case DATE_DIALOG_ID:
            final DatePickerDialog datePicker = new DatePickerDialog(this,
                    mDateSetListener, cyear, cmonth, cday);
            datePicker.setButton(DatePickerDialog.BUTTON_NEGATIVE,
                    this.getString(R.string.set), datePicker);
            datePicker.setButton(DatePickerDialog.BUTTON_POSITIVE,
                    this.getString(R.string.cancel), datePicker);           
            return datePicker;
        }
        return null;
    }

    private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            selectedDay = Integer.parseInt(String.valueOf(dayOfMonth));
            selectedMonth = Integer.parseInt(String.valueOf(monthOfYear + 1));
            selectedYear = Integer.parseInt(String.valueOf(year));
            String date_selected = String.valueOf(monthOfYear + 1) + " /"
                    + String.valueOf(dayOfMonth) + " /" + String.valueOf(year);

            textView.setText(date_selected);

        }
    };

提前致谢...!

4

1 回答 1

2

setButton() 方法的第三个参数是将处理按钮按下的侦听器 (DialogInterface.OnClickListener)。如果您将 DatePickerDialog 作为此参数传入,按下按钮将调用在 Dialog 初始化时附加的侦听器,在本例中为 mDateSetListener。这两个按钮都在调用您的“设置”函数,因为您将 datePicker 作为侦听器传递给两个按钮。尝试创建一个调用 datePicker.dismiss() 的新 DialogInterface.OnclickListener 并在设置肯定按钮时将其用作第三个参数。

于 2012-04-13T20:40:06.020 回答