Подтверждение выбора даты в андроид студии - PullRequest
0 голосов
/ 26 апреля 2018

, если сегодняшняя дата находится в диапазоне 1-15, а дата 16-31 предыдущего месяца включена.когда сегодняшняя дата находится между 16-31, чем текущая дата 1-15 включены.Мой код, пожалуйста, разрешите мою проблему:

 private void DateDialog() {
        final DatePickerDialog dpDialog = new DatePickerDialog(this,android.app.AlertDialog.THEME_DEVICE_DEFAULT_DARK,new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker datePicker, int day, int month, int year) {
                cal = Calendar.getInstance();
                cal.setTimeInMillis(System.currentTimeMillis());
                //int curyear = cal.get(Calendar.YEAR);
                cal.set(day, month, year);

            }
        }, day, month, year);
        if ((day < 15)) {
            int month=cal.get(Calendar.MONTH);
            Log.e("Month", String.valueOf(month));
            int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
            Log.e("days", String.valueOf(days));
            int lastday = days-day;
            Log.e("Lastday", String.valueOf(lastday));
            dpDialog.getDatePicker().setMinDate((month-1)+System.currentTimeMillis()-(1000 * 60 * 60 * 24*(days-day)));
            long now = System.currentTimeMillis() - 1000;
//        dp_time.setMinDate(now);
            dpDialog.getDatePicker().setMaxDate((month-1)+now +(1000 * 60 * 60 * 24 *15));


        }
        else if ((day > 15)) {
            int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
            Log.e("days", String.valueOf(days));
            int lastday = days - 15;
            Log.e("lastday", String.valueOf(lastday));
            int month=cal.get(Calendar.MONTH);
            Log.e("Month", String.valueOf(month));
            dpDialog.getDatePicker().setMinDate((1000*60*60*24*(day+1)));
            long now = System.currentTimeMillis() - 1000;
//        dp_time.setMinDate(now);
            dpDialog.getDatePicker().setMaxDate(now +(1000 * 60 * 60 * 24 *lastday));
        }
        dpDialog.show();

1 Ответ

0 голосов
/ 26 апреля 2018

ваши DatePickerDialog значения конструктора неверны, вы пропустили день вместо года и наоборот, также есть несколько проблем в условиях. вот обновленный код. Просто замените свой код на этот.

  private void DateDialog() {
         final Calendar calendar = Calendar.getInstance();

        final DatePickerDialog dpDialog = new DatePickerDialog(this, android.app.AlertDialog.THEME_DEVICE_DEFAULT_DARK, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker datePicker, int day, int month, int year) {
                cal.set(day, month, year);



                //  cal.set(day, month, year);


            }
        }, year, month, day);

        if (day > 15) {
            calendar.set(Calendar.DAY_OF_MONTH, 1);

            dpDialog.getDatePicker().setMinDate(calendar.getTimeInMillis());
            dpDialog.getDatePicker().setMaxDate(System.currentTimeMillis());

        } else {
            calendar.add(Calendar.MONTH, -1);
            calendar.set(Calendar.DAY_OF_MONTH, 16);

            dpDialog.getDatePicker().setMinDate(calendar.getTimeInMillis());
            dpDialog.getDatePicker().setMaxDate(System.currentTimeMillis());

        }

        dpDialog.show();

    }
...