【发布时间】:2017-04-05 07:15:16
【问题描述】:
我为此苦苦挣扎了几天;如果用户在弹出日历时单击后退按钮。如果用户点击后退按钮,则该字段始终填充当前日期。该类是 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();
}
}
});
【问题讨论】:
-
尝试添加
if (view.isShown())like here。 -
@Ircover 我在 OnDataSet 中添加了 (view.isShown()),它不起作用。当我点击返回按钮时,日期就被填写了。
标签: java android calendar back-button