繁体   English   中英

按日历处理后退按钮

[英]handling back button by calendar

我为此付出了很多努力; 如果在弹出日历时用户单击“后退”按钮。 如果用户单击“后退”按钮,则该字段始终填充有当前日期。 该类是适配器,没有片段或活动。

什么是正确的解决方案?

这是代码。

                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();
                        }
                    }
                });

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM