按日历处理后退按钮

时间:2017-04-05 07:15:17

标签: java android calendar back-button

我这几天都在苦苦挣扎;如果用户在弹出日历时单击后退按钮。如果用户点击后退按钮,则该字段始终填充当前日期。该类是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();
                        }
                    }
                });

1 个答案:

答案 0 :(得分:0)

如果要在反对时关闭对话框,请执行以下操作:

  • 全球声明DatePickerDialog
  • 现在onBackPressed(),检查对话框是否显示为:

    @Override
    public void onBackPressed() {
       if(dialog != null || dialog.isVisible()){
          dialog.dismiss();
          dialog = null;
       }
    }