仅在按下“完成”按钮时获取DatePickerDialog值

时间:2012-09-09 07:29:19

标签: android

通过在API演示中引用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,并选择最新的微调器日期。

我只对获取所选日期感兴趣,当用户按完成按钮,而不是后退按钮时。

有什么办法可以实现吗?

1 个答案:

答案 0 :(得分:3)

这似乎是discussed in this post框架中的一个错误(包括建议的解决方法)。