Как правильно отображать диалоги выбора даты в андроид студии? - PullRequest
0 голосов
/ 23 сентября 2019

Я уже некоторое время кодирую приложения для Android и никогда раньше не сталкивался с этой проблемой.Я кодировал **datePickerDialogue** в моем приложении для Android.Проблема в том, что на панели выбора даты не отображаются кнопки «ОК» и «Отмена», а также текущая выбранная дата сверху.Я попробовал тот же самый код со свежим проектом, в недавно созданном проекте средство выбора даты работает отлично.В чем может быть ошибка?Кто-нибудь может помочь мне с этим?Моя целевая версия SDK - 29, а minSdkversion - 15.

Код для datePickerDialogue выглядит следующим образом:

TextView date_view = (TextView) findViewById(R.id.date_view);
date_view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Calendar calendar = Calendar.getInstance();
            int year = calendar.get(Calendar.YEAR);
            int month = calendar.get(Calendar.MONTH);
            int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
            DatePickerDialog datePickerDialog = new DatePickerDialog(MoraUserReserve.this,R.style.MyTimePickerDialogTheme,
                    new DatePickerDialog.OnDateSetListener() {
                        @Override
                        public void onDateSet(DatePicker datePicker, int year, int month, int day) {
                            date_view.setText(day + "/" + month + "/" + year);
                        }
                    }, year, month, dayOfMonth);
            datePickerDialog.show();

        }
    });

Это то, что я получаю, когда запускаю свое приложение

Ответы [ 2 ]

0 голосов
/ 28 сентября 2019

попробуйте, это может помочь вам.

private Calendar myCalendar = Calendar.getInstance();

публично объявите эту строку выше: -

DatePickerDialog datePickerDialog = new DatePickerDialog(context,
                    new DatePickerDialog.OnDateSetListener() {

 @Override
 public void onDateSet(DatePicker view, int year,
                                              int monthOfYear, int dayOfMonth) 
{

                            et_date.setText((monthOfYear + 1) + "/" + 
 dayOfMonth + "/" + year);

                        }
                    }, myCalendar.get(Calendar.YEAR), 
myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DATE));


datePickerDialog.getDatePicker().setMaxDate(myCalendar.getTimeInMillis());
            datePickerDialog.show();
0 голосов
/ 24 сентября 2019

Попробуйте это

Объявите это глобально.

private Calendar Calendar1 = Calendar.getInstance();
DatePickerDialog dpdialog;

Запустите DatePickerDialog onCreate

dpdialog = new DatePickerDialog(context, date, Calendar1
                    .get(Calendar.YEAR), Calendar1.get(Calendar.MONTH),
                    Calendar1.get(Calendar.DAY_OF_MONTH));
            dpdialog.getDatePicker();

Поставьте его, когда хотите показать DatePickerDialog.

            dpdialog.show(); 

Этот подбор даты

final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                              int dayOfMonth) {
            // TODO Auto-generated method stub
            Calendar1.set(Calendar.YEAR, year);
            Calendar1.set(Calendar.MONTH, monthOfYear);
            Calendar1.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            updateCalendar1();
        }

    };

Поместите свою операцию здесь (измените формат даты вашего желания, отобразите его edittext / textview, ...)

private void updateCalendar1() {
        String myFormat = "MM/dd/yyyy";
        SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

        YOUR_TEXTVIEW.setText(sdf.format(Calendar1.getTime()));
    }
...