2011-01-07 19 views

Antwort

7

Ich nehme an, Sie verwenden DatePickerDialog und die OnDateSetListener, die Sie an den Konstruktor übergeben haben nicht Ihren Anforderungen passen, weil Sie den Fehler zu werfen, bevor das Datum tatsächlich eingestellt ist.

In diesem Fall können Sie DatePickerDialog erweitern und Ihre eigene Implementierung von OnDateChanged erstellen, die jedes Mal aufgerufen wird, wenn sich das Datum ändert und Sie als Parameter den DatePicker und die neuen Jahr-, Monats- und Tageswerte erhalten, damit Sie überprüfen können Dieses Datum ist vergangen und in diesem Fall den Fehler (mit einem Toast oder was auch immer) zu werfen und DatePicker.updateDate() aufrufen, um einen korrekten Wert einzustellen (so dass DatePicker immer in einem konsistenten Zustand ist).

Sie können aber auch zu DatePicker.init(year, monthOfYear, dayOfMonth, onDateChangedListener); rufen dann können Sie eine onDateChangedListener Implementierung passieren, ohne DatePickerDialog zu erweitern, die

1

Sie Datum .. manuell überprüfen und beschränken Benutzer von ungültiges Datum eingeben:

Überprüfen Sie die folgenden Code-Schnipsel :

 if((futureDate.getDate() == currentDate1.getDate() && futureDate.getMonth()== currentDate1.getMonth() && futureDate.getYear() == currentDate1.getYear())) 
       { 
        if(futureDate.after(currentDate1)) 
        { 
            // Accept Date 
        } 
        else 
        { 
            // Alert user Date is Invalid 
        } 

       } 
       else 
       { 
         // Alert user Date is Invalid 
       } 
0

Wenn Sie 11 API oder mehr, die setMinDate() Methode auf DatePicker verwenden ausgeführt werden. Dadurch werden alle Daten vor dem angegebenen Datum ausgeblendet.

0

Hoffe, das wird helfen.

public void openDateDialog (Ansicht anzeigen) { final Calendar c = Calendar.getInstance(); final int dayOfMonth = c.get (Kalender.DAY_OF_MONTH); endgültig int monthOfYear = c.get (Calendar.MONTH); final int Jahr = c.get (Kalender.YEAR);

new MyDatePickerDialog(view.getContext(), null, year, monthOfYear, dayOfMonth).show();; 

}

class MyDatePickerDialog extends DatePickerDialog { 


     public MyDatePickerDialog(Context context, OnDateSetListener callBack, 
       int year, int monthOfYear, int dayOfMonth) { 
      super(context, callBack, year, monthOfYear, dayOfMonth); 
      this.context = context; 
     } 


     private Context context; 



     @Override 
     public void onDateChanged(DatePicker view, int year, int month, int day) { 
      // TODO Auto-generated method stub 
      super.onDateChanged(view, year, month, day); 
       Calendar dareSelected = Calendar.getInstance(); 
       dareSelected.set(year, month, day); 
       Calendar currentDate = Calendar.getInstance(); 

       int a = dareSelected.compareTo(currentDate); 
       if(a<0){ 
        Toast.makeText(context, "Invalid Date", Toast.LENGTH_SHORT).show(); 
       }else{ 
        setDate(year,month,day); 
       } 
     } 
    } 

    private void setDate(int year, int monthOfYear, int dayOfMonth){ 
     tvText.setText(new StringBuilder().append(pad(dayOfMonth)) 
       .append("-").append(pad(monthOfYear + 1)).append("-") 
       .append(pad(year))); 

    } 

    private static String pad(int c) { 
     if (c >= 10) 
      return String.valueOf(c); 
     else 
      return "0" + String.valueOf(c); 
    } 
Verwandte Themen