【发布时间】:2014-12-15 10:21:43
【问题描述】:
我有一个带有 calendarView 的片段,当我单击“buttonRectangle”按钮时,它会显示一个 datePicker 来设置日期。 我的问题是,如果用户取消(通过单击对话框外部或使用 android 后退按钮,则会调用“generateDays()”方法。如果用户取消,我不希望调用该方法。我试过了"setCanceledOnTouchOutside(true)" 但它不起作用。
buttonRectangle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final Calendar myCalendar = Calendar.getInstance();
DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
generateDays(myCalendar);
}
};
DatePickerDialog dpd= new DatePickerDialog(getActivity(), date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH));
dpd.setCanceledOnTouchOutside(true);
dpd.show();
calendar.refreshCalendar();
}
});
提前致谢。
【问题讨论】:
-
使用 dpd.setCancelable(true);
-
还是同样的问题。
-
解决了这个问题... if(view.isShown()){ generateDays(myCalendar); }
标签: android button android-activity android-fragments datepicker