1

API demoを参照DateWidgets1.javaすると、次の方法で日付ピッカー ウィジェットを表示する傾向があります。

private void initDateTextView() {
    dateTextView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            showDialog(DATE_DIALOG_ID);                
        }            
    });
}

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DATE_DIALOG_ID:
       // set date picker as current date
       return new DatePickerDialog(this, datePickerListener, 
                     this.year, this.month, this.date);
    }
    return null;
}

@Override
protected void onPrepareDialog(int id, Dialog dialog) {
    switch (id) {
    case DATE_DIALOG_ID:
        ((DatePickerDialog)dialog).updateDate(this.year, this.month, this.date);
    }        
}

private static final int DATE_DIALOG_ID = 0;
private final DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
    // When dialog box is closed, below method will be called.
    public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
        Log.i("CHEOK", selectedYear + ", " + selectedMonth + ", " + selectedDay);
    }
};

ただし、ダイアログの [完了] ボタンを押しているか、電話のソフト戻るボタンを押しているかに関係なく、最新のスピナーが選択した日付で onDateSet が常に呼び出されることを認識しています。

ユーザーが[完了]ボタンを押したときに選択した日付を取得することにのみ関心がありますが、[戻る]ボタンには関心がありません。

私がそうすることができる方法はありますか?

4

1 に答える 1

3

これは、この投稿で説明されているフレームワークのバグのようです(推奨される回避策が含まれています)。

于 2012-09-09T08:41:03.003 に答える