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()メソッドの3番目の引数は、ボタンの押下を処理するリスナー(DialogInterface.OnClickListener)です。この引数としてDatePickerDialogを渡す場合、ボタンを押すと、ダイアログが初期化されたときに接続されているリスナー(この場合はmDateSetListener)が呼び出されます。datePickerをリスナーとして両方のボタンに渡すため、両方のボタンが「set」関数を呼び出しています。datePicker.dismiss()を呼び出す新しいDialogInterface.OnclickListenerを作成し、ポジティブボタンを設定するときにそれを3番目の引数として使用してみてください。

于 2012-04-13T20:40:06.020 に答える