2017-10-04 3 views
0

J'ai une activité simple où un utilisateur doit choisir la date (date seulement, sans temps). Je dois faire une validation correcte. Tout d'abord, j'ai pensé à mettre dayOfMonth, monthOfYear et year dans 3 différents Text View, puis en utilisant "if else" écrire des conditions telles que (si jour < = 0 ou> = 31 ...). Le code i essayé:DatePickerDialog dans Android, la validation de la date

 @Override 
     public void onClick(View v) { 
      final Calendar c = Calendar.getInstance(); 
      int mYear = c.get(Calendar.YEAR); 
      int mMonth = c.get(Calendar.MONTH); 
      int mDay = c.get(Calendar.DAY_OF_MONTH); 

      datePickerDialog = new DatePickerDialog(Date.this, 
        new DatePickerDialog.OnDateSetListener() { 

         @Override 
         public void onDateSet(DatePicker view, int year, 
               int monthOfYear, int dayOfMonth) { 
          tvDay.setText(dayOfMonth); 
          tvMonth.setText(monthOfYear); 
          tvYear.setText(year); 


         } 
        }, mYear, mMonth, mDay); 
      datePickerDialog.show(); 
     } 
    }); 

Mais cela ne fonctionne pas, je peux mettre dayOfMonth, année monthOfYear seulement dans 1 Voir le texte. Comme ceci:

 public void onClick(View v) { 
      final Calendar c = Calendar.getInstance(); 
      int mYear = c.get(Calendar.YEAR); 
      int mMonth = c.get(Calendar.MONTH); 
      int mDay = c.get(Calendar.DAY_OF_MONTH); 

      datePickerDialog = new DatePickerDialog(Date.this, 
        new DatePickerDialog.OnDateSetListener() { 

         @Override 
         public void onDateSet(DatePicker view, int year, 
               int monthOfYear, int dayOfMonth) { 
          tvDate.setText(dayOfMonth + "/" + (monthOfYear + 1) + "/" + year); 
         } 
        }, mYear, mMonth, mDay); 
      datePickerDialog.show(); 
     } 
    }); 
} 

Comment serait de faire correctement la validation dans mon cas? C'est probablement une question stupide, désolé, mais je suis novice.

Merci.

+0

Pourquoi avez-vous besoin d'une validation ici? Vous n'avez pas besoin d'une validation si vous utilisez datepickerdialog –

Répondre

2

Vous pouvez utiliser SimpleDateFormat et calanderObject.getTime() vous donnera une date bien formatée sous la forme d'un String

Ici, je passe une référence d'un TextView dans la méthode. Ce n'est pas important cependant.

private void setDate(final TextView tV) { 
    final Calendar cal = Calendar.getInstance(); 

    DatePickerDialog dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 
     @Override 
     public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
      SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH); 
      cal.set(year, monthOfYear, dayOfMonth); 
      tV.setText(dateFormat.format(cal.getTime())); 
     } 
    }, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)); 
    dialog.show(); 
} 
0

Dennis est juste, je veux juste ajouter que pour la validation de date, vous pouvez utiliser l'objet de calendrier, il a toute cette opération cool comme jeu contre la date d'aujourd'hui comme

si (someDate> = maintenant) { Il est beaucoup plus facile de l'implémenter seul, si vous avez un calcul qui doit considérer l'année bissextile (le 29/2 tous les 4 ans) alors vous devriez utiliser GregorianCalendar qui hérite de Calendar.

https://developer.android.com/reference/java/util/GregorianCalendar.html