首页 > 解决方案 > 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();
                }
            });
}

在此处输入图像描述

标签: javaandroid

解决方案


你想显示 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

预习 工作代码示例


推荐阅读