2015-10-13 6 views
8

Dopo aver utilizzato setMaxDate per limitare il numero di giorni selezionabili su DatePickerDialog, l'ultimo giorno non è disattivato ma non è selezionabile. Grazie in anticipo per il tuo aiuto.L'ultimo giorno di DatePickerDialog non è selezionabile dopo l'impostazione della data massima

private void showDatePickerDialog() { 
    DateTime dateTime = new DateTime(); 
    DateTime tomorrow = dateTime.plusDays(1); 
    int year = tomorrow.getYear(); 
    int month = tomorrow.getMonthOfYear() -1; // zero based months 
    int day = tomorrow.getDayOfMonth(); 

    DateTime thirtyDaysInFuture = dateTime.plusDays(30); 

    long tomorrowMilliseconds = tomorrow.getMillis(); 
    long futureMilliseconds = thirtyDaysInFuture.getMillis(); 


    Log.d(TAG, "YEAR: " + year + ", MONTH: " + month + ", DAY: " + day); 

    DatePickerDialog datePickerDialog = new DatePickerDialog(context, new DatePickerDialog.OnDateSetListener() { 
     @Override 
     public void onDateSet(DatePicker datePicker, int i, int i1, int i2) { 
      Log.d(TAG, i + ", " + i1 + ", " + i2); 

     } 
    }, year, month, day); 

    datePickerDialog.getDatePicker().setMinDate(tomorrowMilliseconds); 
    datePickerDialog.getDatePicker().setMaxDate(futureMilliseconds); 
    datePickerDialog.show(); 
} 
+1

Solo curioso se mai trovato la soluzione per Questo? Sto avendo lo stesso problema. Non riesco a selezionare l'ultima data selezionabile (anche se mostra selezionabile). La cosa strana è che funziona bene su un dispositivo virtuale, ma non sul mio telefono reale. – dschuett

+0

Questo sembra essere specifico per alcune versioni di Android. Nel mio caso, un Samsung Galaxy Tab 4 con Android 5.1.1. Da quello che ho letto, questo può essere applicato a tutti i dispositivi lecca-lecca. –

risposta

11

Ho avuto un problema simile e ho risolto impostando ora, minuti e secondi della data massimo di 23, 59 e 59 rispettivamente.

DatePickerDialog datePickerDialog = new DatePickerDialog(this, 
     new DatePickerDialog.OnDateSetListener() { 
      @Override 
      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
       // Add your code here 
      } 
     }, year, month, day); 

Calendar maxDate = Calendar.getInstance(); 
maxDate.set(Calendar.HOUR_OF_DAY, 23); 
maxDate.set(Calendar.MINUTE, 59); 
maxDate.set(Calendar.SECOND, 59); 
datePickerDialog.getDatePicker().setMaxDate(maxDate.getTimeInMillis()); 
0

Ho avuto lo stesso problema e ho trovato una risposta. Tenta di utilizzare questo codice:

In primo luogo si deve reimpostare la data corrente, si tratta di ore, minuti e secondi

 Calendar calendar = Calendar.getInstance(); 
     calendar.set(Calendar.HOUR_OF_DAY, 0); 
     calendar.set(Calendar.MINUTE, 0); 
     calendar.set(Calendar.SECOND, 0); 

     calendar.add(Calendar.DAY_OF_YEAR, 14); //I set max date +2 weeks 
     calendar.add(Calendar.HOUR_OF_DAY, 23); 
     calendar.add(Calendar.MINUTE, 59); 
     calendar.add(Calendar.SECOND, 59); 

     dlgDate.getDatePicker().setMaxDate(calendar.getTimeInMillis()); 

Spero aiuterò

Problemi correlati