0

現在の私の問題は、DatePickerDialogから取得した値を、Dateコンストラクターに送信したときに正しく解析されないことです。

日付値の取得(別の投稿からの提案による)...

private DatePickerDialog.OnDateSetListener listener = new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        mYear = year;
        mMonth = monthOfYear + 1;
        mDayOfMonth = dayOfMonth;
        String t = "listener => mYear=" + mYear + "; mMonth=" + mMonth +
                "; mDayOfMonth=" + mDayOfMonth + ";";
        Log.i(TAG, t);
    }
};

上記のロギングステートメントは次のようになります。

04-30 21:34:10.548: I/TodosActivity(29510): listener => mYear=2012; mMonth=5; mDayOfMonth=2;

日付は...で設定されます。

todo.setDueDate(new Date(mYear, mMonth, mDayOfMonth));

期日を確認しました…。

String t = "setNewDueDate(Todo) => #" + todo.getId() + ": " + todo.getTitle() + " (" +
            todo.getText() + "). Created on " + format.format(todo.getCreatedDate()) +
            ". Last modified on " + format.format(todo.getModifiedDate()) +
            ". Due on " + format.format(todo.getDueDate()) + ".";
Log.i(TAG, t);

その結果...

04-30 21:34:05.703: I/TodosActivity(29510): setNewDueDate(Todo) => #1: Test (Test). Created on 30 Apr 2012 20:07:51. Last modified on 30 Apr 2012 20:55:27. Due on 31 Dec 1899 00:00:00.

編集:

DatePickerDialogの初期値を設定しています...

        return new DatePickerDialog(this, listener, cal.get(Calendar.YEAR),
                cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));

すべき/すべきでないことはありますか?

4

1 に答える 1

4

Calendarおよびそのさまざまなメソッドを使用しset()て、日付を更新します。

たとえば、このサンプル プロジェクトには次のようなコードがあります。

 DatePickerDialog.OnDateSetListener d=new DatePickerDialog.OnDateSetListener() {
    public void onDateSet(DatePicker view, int year, int monthOfYear,
                          int dayOfMonth) {
      dateAndTime.set(Calendar.YEAR, year);
      dateAndTime.set(Calendar.MONTH, monthOfYear);
      dateAndTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);
      updateLabel();
    }
  };

はどこdateAndTimeですかCalendar

于 2012-04-30T12:55:46.503 に答える