0

EdittextのDatepickerから選択した日付を取得しようとしています。ただし、Edittextでは月と年は更新されません。

Datepickerの現在の日付が2013年3月25日で、2011年2月29日に変更すると、日は正しく表示されますが(29を意味します)、月はまだ03で、年も2013です。

月と年が更新されない理由がわかりません。

これが私のコードです:

private int pYear=2012;
private int pMonth=04;
private int pDay=12;
private DatePickerDialog.OnDateSetListener pDateSetListener = new DatePickerDialog.OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear,
    
                int dayOfMonth) {
            pYear = year;
            pMonth = monthOfYear;
            pDay = dayOfMonth;

            if (pMonth != Calendar.getInstance().get(Calendar.MONTH)
                    || pYear != Calendar.getInstance().get(Calendar.YEAR)) {
                    
                pMonth = Calendar.getInstance().get(Calendar.MONTH);
                pYear = Calendar.getInstance().get(Calendar.YEAR);
            }
            updateDisplay();

        }
    };

    
    /** Updates the date in the TextView */
    private void updateDisplay() {
        txtdob.setText(new StringBuilder()
                // Month is 0 based so add 1
        .append(pDay).append("/").append(pMonth + 1).append("/")
        .append(pYear).append(" "));
    }

    /** Create a new dialog for date picker */
    @Override
    protected Dialog onCreateDialog(int id) {

        Calendar cal = Calendar.getInstance();

        switch (id) {
        case DATE_DIALOG_ID:
            return new DatePickerDialog(AddBabyActivity.this, pDateSetListener,
                    cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), pDay);

        }
        return null;
    }

imvDate.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v) {
            showDialog(DATE_DIALOG_ID);
        }
    });  

どこが間違っているのですか?

4

1 に答える 1

1

これは、日付セット内のこのコードの一部が原因で、次のコードを削除したためだと思います

if (pMonth != Calendar.getInstance().get(Calendar.MONTH)
                || pYear != Calendar.getInstance().get(Calendar.YEAR)) {

            pMonth = Calendar.getInstance().get(Calendar.MONTH);
            pYear = Calendar.getInstance().get(Calendar.YEAR);
        }

日付セッターからの月と年が現在のカレンダーの月と年と同じでない場合は、それらを現在の月と年に変更します。

于 2013-03-15T07:10:03.380 に答える