2017-11-16 5 views
-2

Ich habe zwei DatePicker. Eins mit Von Datum und anderes mit Bis Datum. Ich möchte Anzeige Bis Datum immer größer als von Datum nach Von Datum Auswahl .Ich verwende die Android-Standard-Datumsauswahl und möchten die Vergangenheit Daten von TO datepicker deaktivieren, wenn es größer ist als das Datum von und umgekehrt. Ich weiß Dieses Thema wurde mehrmals hier gefragt. Aber ich konnte meinen Code nicht wie die vorgeschlagenen Lösungen arbeiten lassen, also bitte helfen Sie?Wie man Android Datepicker tut Bis Datum größer als von Datum Validierung

Calendar calendarOne = Calendar.getInstance(); 


    datePickerFrom= new DatePickerDialog(getActivity(), new 
    DatePickerDialog.OnDateSetListener() { 

    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, 
    int dayOfMonth) { 
     StringBuilder selectedDate = new 
    StringBuilder().append(dayOfMonth).append("-").append(monthOfYear + 
    1).append("-").append(year); 
    fromText.setText(selectedDate); 
    fromText.setTextColor(android.graphics.Color.BLACK); 
    } 

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

fromText.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     datePickerFrom.getDatePicker().setMaxDate(new 
    Date().getTime()); 
     datePickerFrom.show(); 
    } 
}); 


    Calendar calendarTwo = Calendar.getInstance(); 
    datePickerTo = new DatePickerDialog(getActivity(), new 
    DatePickerDialog.OnDateSetListener() { 
    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, int 
    dayOfMonth) { 
     StringBuilder selectedDate = new 
    StringBuilder().append(dayOfMonth).append("-").append(monthOfYear + 
    1).append("-").append(year); 
     toText.setText(selectedDate); 
     toText.setTextColor(android.graphics.Color.BLACK); 
     } 
    }, calendarTwo.get(Calendar.YEAR), calendarTwo.get(Calendar.MONTH), 
    calendarTwo.get(Calendar.DAY_OF_MONTH)); 

    toText.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     datePickerTo.getDatePicker().setMaxDate(new Date().getTime()); 
     datePickerTo.show(); 
     } 
    }); 
    } 

................................ Aktualisiert-Code

final Calendar calendarOne = Calendar.getInstance(); 
    datePickerFrom= new DatePickerDialog(getActivity(), new 
      DatePickerDialog.OnDateSetListener() 
      { 
       @RequiresApi(api = Build.VERSION_CODES.N) 
       @Override 
       public void onDateSet(DatePicker view, int year, final int 
    monthOfYear, int dayOfMonth) 
       { 
        StringBuilder selectedDate = new 
          StringBuilder().append(dayOfMonth).append("- 
     ").append(monthOfYear + 1).append("-").append(year); 
        fromText.setText(selectedDate); 
        fromText.setTextColor(android.graphics.Color.BLACK); 

        Calendar calendarTwo = Calendar.getInstance(); 
        datePickerTo = new DatePickerDialog(getActivity()); 


    datePickerTo.getDatePicker().setMinDate(calendarOne.getTimeInMillis()); 

        datePickerTo = new DatePickerDialog(activity, new 
    DatePickerDialog.OnDateSetListener() { 

         @Override 
         public void onDateSet(DatePicker view, int year, int 
    month, int dayOfMonth) { 
          StringBuilder selectedDate = new 
    StringBuilder().append(dayOfMonth).append("-").append(monthOfYear + 
    1).append("-").append(year); 
           toText.setText(selectedDate); 

    toText.setTextColor(android.graphics.Color.BLACK); 
         } 
        }, calendarTwo.get(Calendar.YEAR), 
    calendarTwo.get(Calendar.MONTH), 
         calendarTwo.get(Calendar.DAY_OF_MONTH)); 

         toText.setOnClickListener(new View.OnClickListener() 
        { 
         @Override 
         public void onClick(View view) 
         { 
          datePickerTo.getDatePicker().setMaxDate(new 
    Date().getTime()); 
          datePickerTo.show(); 
         } 
        }); 

       } 

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

    fromText.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      datePickerFrom.getDatePicker().setMaxDate(new 
        Date().getTime()); 
      datePickerFrom.show(); 
     } 
    }); 

Antwort

1

allererst declare folgende in der Klasse vor onCreate:

private String fromDate; 
private DatePickerDialog fromDatePicker; 
private DatePickerDialog.OnDateSetListener fromDatePickerListener; 
private Calendar fromDateCalendar; 
private String toDate; 
private DatePickerDialog toDatePicker; 
private DatePickerDialog.OnDateSetListener toDatePickerListener; 
private Calendar toDateCalendar; 

Danach in Ihrer onCreate Methode folgenden Code hinzu:

fromDateCalendar = Calendar.getInstance(); 
    fromDatePickerListener = new DatePickerDialog.OnDateSetListener() { 

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

      fromDate = fromDateCalendar.get(Calendar.YEAR) + "-" + (fromDateCalendar.get(Calendar.MONTH)+1) + "-" + fromDateCalendar.get(Calendar.DAY_OF_MONTH); 
      //etFromDate.setText(fromDate); 
      toDatePicker.getDatePicker().setMinDate(fromDateCalendar.getTimeInMillis()); 
     } 

    }; 

    toDateCalendar = Calendar.getInstance(); 
    toDatePickerListener = new DatePickerDialog.OnDateSetListener() { 

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

      toDate = toDateCalendar.get(Calendar.YEAR) + "-" + (toDateCalendar.get(Calendar.MONTH)+1) + "-" + toDateCalendar.get(Calendar.DAY_OF_MONTH); 
      //etToDate.setText(toDate); 
     } 

    }; 

    toDatePicker = new DatePickerDialog(getContext(),toDatePickerListener, toDateCalendar.get(Calendar.YEAR), toDateCalendar.get(Calendar.MONTH), toDateCalendar.get(Calendar.DAY_OF_MONTH)); 
    fromDatePicker = new DatePickerDialog(getContext(),fromDatePickerListener, fromDateCalendar.get(Calendar.YEAR), fromDateCalendar.get(Calendar.MONTH), fromDateCalendar.get(Calendar.DAY_OF_MONTH)); 

Der nächste Schritt ist, wenn Sie Ihre Datumsauswahl angezeigt werden soll, auf Taste oder Bearbeiten von Text klicken, wo immer Sie Ihre Datumsauswahl verwenden folgenden Zeilen zeigen wollen zeigen:

fromDatePicker.show(); 
toDatePicker.show(); 

Auch Sie können Strings fromDate und toDate verwenden, um ausgewählte Daten anzuzeigen, wenn Sie sie an einer beliebigen Stelle wie in einem textView oder editText anzeigen möchten.

+0

Kommentare sind nicht für längere Diskussion; Diese Konversation wurde [in den Chat verschoben] (http://chat.stackoverflow.com/rooms/159407/discussion-on-answer-by-m-saad-lakhan-how-to-do-android-datepicker--to- Datum-groß). – Andy

+0

Hai kann jemand helfen – user8737536

Verwandte Themen