java - Android 中的 DatePickerDialog
问题描述
对话框打开时出现问题,再次按 ok 没有任何反应,但是当您再次按 edittext 时,一切正常。我认为有一个对话日历盈余。有人可能知道吗?谢谢
@Override
protected void onCreate(Bundle savedInstanceState) {
calendar = Calendar.getInstance();
//final Calendar mCalendar = new GregorianCalendar();
final DatePickerDialog.OnDateSetListener datePocetnoVreme = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, monthOfYear);
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
if (brojacZavrsnoVreme == 0) {
brojacZavrsnoVreme = 1;
} else {
showTimePicker(true);
brojacZavrsnoVreme = 0;
}
}
};
pocetnoVremeEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new DatePickerDialog(Unos.this,R.style.DialogTheme,datePocetnoVreme,calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show();
}
});
final DatePickerDialog.OnDateSetListener dateZavrsnoVreme = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, monthOfYear);
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
if (brojacZavrsnoVreme == 0) {
brojacZavrsnoVreme = 1;
} else {
showTimePicker(false);
brojacZavrsnoVreme = 0;
}
}
};
zavrsnoVremeEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new DatePickerDialog(Unos.this, dateZavrsnoVreme, calendar
.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH)).show();
}
});
}
解决方案
你想显示 DatePicker,设置日期按下 Ok 显示 TimePicker 并设置时间我在我的项目中使用这个代码,它完美地适用于这个用例
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy h:mm a", Locale.getDefault());
private void pickDateTime(){
final Calendar currentDate = Calendar.getInstance();
final Calendar date = Calendar.getInstance();
DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
date.set(year, month, dayOfMonth);
new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
date.set(Calendar.HOUR_OF_DAY, hourOfDay);
date.set(Calendar.MINUTE, minute);
String selectedDateTime = simpleDateFormat.format(date.getTime());
}
},currentDate.get(Calendar.HOUR_OF_DAY), currentDate.get(Calendar.MINUTE), false).show();
}
}, currentDate.get(Calendar.YEAR), currentDate.get(Calendar.MONTH), currentDate.get(Calendar.DATE));
datePickerDialog.show();
}
输出示例:2021 年 2 月 23 日 10:51
推荐阅读
- amazon-web-services - 如果主键不同,为什么获取记录,修改其主键,然后将其放回似乎会覆盖记录?
- javascript - TextInput 聚焦时如何防止 React Native 键盘缩小?
- java - 使用 lwjgl 为对象设置动画的适当框架?
- java - 检查业务规则中提供的许多动态值的最佳方法
- flutter - `flutter build web` 没有创建一个新版本?
- json - AWS Glue - 取消嵌套或关系化后无法选择字段
- java - 将maven项目构建到特定目录
- google-apps-script - 使用 App Script 更新 Google Sheet 中的图表标题而不重置其他选项
- sharepoint - 根据项目是否有附件执行一组操作
- python - python和excel自动化