2016-07-02 4 views
0

Ich habe zwei Eingabefelder für das Einchecken und ein anderes für das Auschecken Datum.Stellen Sie ein DatePickerDialog min Tag einen Tag über anderen DatePickerDialog

Ich habe zwei DatePickerDialog dafür genommen, die geöffnet werden, wenn Sie auf die Edit-Textfelder klicken, das funktioniert gut, aber ich brauche es einzurichten, wenn ein Datum für check-in Bearbeitungsfeld für Check ausgewählt wird out datepicker sollte am nächsten Tag des Check-in-Datum beginnen.

dh Ihr Check-out-Datum kann nicht vor Ihrem Check-in-Datum sein.

my current code: 

private void setDateTimeField() { 
     checkInEdit.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       if (hasFocus){ 
        fromDatePickerDialog.show(); 

       } 
      } 
     }); 

     checkOutEdit.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       if (hasFocus) { 
        toDatePickerDialog.show(); 
       } 
      } 
     }); 

     Calendar newCalendar = Calendar.getInstance(); 
     fromDatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 

      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
       Calendar newDate = Calendar.getInstance(); 
       newDate.set(year, monthOfYear, dayOfMonth); 
       checkInEdit.setText(dayOfMonth + "-" + monthOfYear + "-" + year); 

       newDate.add(Calendar.DATE, 1); 

       toDatePickerDialog.getDatePicker().setMinDate(newDate.get(Calendar.MILLISECOND)); 
      } 

     },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); 


     toDatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 

      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
       Calendar newDate = Calendar.getInstance(); 
       newDate.set(year, monthOfYear, dayOfMonth); 
       checkOutEdit.setText(dayOfMonth + "-" + monthOfYear + "-" + year); 
      } 

     },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); 


     fromDatePickerDialog.getDatePicker().setMinDate(newCalendar.get(Calendar.MILLISECOND)); 
     toDatePickerDialog.getDatePicker().setMinDate(newCalendar.get(Calendar.MILLISECOND)); 
    } 

Ich habe die Zeile hinzugefügt

toDatePickerDialog.getDatePicker().setMinDate(newDate.get(Calendar.MILLISECOND)); 

im fromDatePickerDialog onDateSet Verfahren jedoch diese nicht zu halten scheinen, das heißt, wenn ich die toDatePickerDialog das Datum noch offen zu heute eingestellt ist.

Antwort

0

habe ich nicht getestet, aber unter Code versuchen, wenn es funktioniert,

Erste für so wie unten ab Datum mit calander Datentyp einer globalen Variablen nehmen:

 Calendar fromDate; 

Jetzt auf von Datum wählen setzen Sie diesen VonDatum dort mit ausgewählten Datum wie unten

 // In your fromDatePickerDialog at onDateSet method 
    fromDate = newDate; 

Ändern Sie jetzt Ihren unteren Code für den Fokuslistener, um den Text zu bearbeiten

 checkOutEdit.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if (hasFocus) { 

       if(fromDate != null) 
         toDatePickerDialog.setMinDate(fromDate.getTime()); 

       toDatePickerDialog.show(); 
      } 
     } 
    }); 
Verwandte Themen