DatePickerDialog的OnDateSetListener被调用两次的bug解决方案
使用DatePickerDialog.OnDateSetListener
的时候发现回调了两次。原因貌似源码的问题。
解决方案:
判断下view是否显示着
final Context context = MainActivity.this;
Calendar calendar = Calendar.getInstance();
int y = calendar.get(Calendar.YEAR);
int m = calendar.get(Calendar.MONTH);
int d = calendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
if (view.isShown()) { // 这里判断
Toast.makeText(context, String.format(Locale.CHINA, "(y, m, d) = (%d, %d, %d)", year, month, dayOfMonth), Toast.LENGTH_SHORT).show();
}
}
};
DatePickerDialog datePickerDialog = new DatePickerDialog(context, onDateSetListener, y, m, d);
datePickerDialog.show();