我这几天都在苦苦挣扎;如果用户在弹出日历时单击后退按钮。如果用户点击后退按钮,则该字段始终填充当前日期。该类是een适配器,没有片段或活动。
什么是正确的解决方案?
这是代码。
holder.valueLabel.setOnClickListener(view -> {
if (item.value.equals(""))
try {
String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
holder.valueLabel.setText(date);
DatePickerDialog datePickerDialog = showDatePickerDialog(holder.valueLabel.getText().toString(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
String dateInFormat = getDateInFormat(year, month, day);
holder.valueLabel.setText(dateInFormat);
mItems.get(position).value = dateInFormat;
}
});
datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Annuleren", (DialogInterface.OnClickListener) (dialog, which) -> {
if (which == DialogInterface.BUTTON_NEGATIVE) {
String dateCancel = "";
holder.valueLabel.setText("");
mItems.get(position).value = dateCancel;
} else {
}
});
datePickerDialog.show();
} catch (ParseException e) {
e.printStackTrace();
}
else {
try {
DatePickerDialog datePickerDialog = showDatePickerDialog(holder.valueLabel.getText().toString(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
String dateInFormat = getDateInFormat(year, month, day);
holder.valueLabel.setText(dateInFormat);
mItems.get(position).value = dateInFormat;
}
});
datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Veld leegmaken", (DialogInterface.OnClickListener) (dialog, which) -> {
if (which == DialogInterface.BUTTON_NEGATIVE) {
String dateCancel = "";
holder.valueLabel.setText("");
mItems.get(position).value = dateCancel;
} else {
}
});
datePickerDialog.show();
} catch (ParseException e) {
e.printStackTrace();
}
}
});
答案 0 :(得分:0)
如果要在反对时关闭对话框,请执行以下操作:
现在onBackPressed(),检查对话框是否显示为:
@Override
public void onBackPressed() {
if(dialog != null || dialog.isVisible()){
dialog.dismiss();
dialog = null;
}
}