Sto lavorando a un'app in cui sto utilizzando una selezione di data e ora personalizzata. Ho creato una finestra di dialogo e al suo interno visualizzo la data e l'ora rispettivamente, ora voglio impostare un limite minimo e massimo per il selezionatore di date. Come non si dovrebbe essere in grado di selezionare la data precedente da oggi e non più di un mese prima. Questo è il mio codiceCome impostare un limite minimo e massimo per un selettore di date in Android?
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final DatePicker picker = new DatePicker(getActivity());
try {
Field f[] = picker.getClass().getDeclaredFields();
for (Field field : f) {
if (field.getName().equals("mYearPicker") || field.getName().equals("mYearSpinner")) {
field.setAccessible(true);
Object yearPicker = new Object();
yearPicker = field.get(picker);
((View) yearPicker).setVisibility(View.GONE);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
picker.setCalendarViewShown(false);
picker.setMinDate(new Date().getTime());
builder.setTitle("Please select date on which you would be leaving :")
.setView(picker)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
SimpleDateFormat parseFormat = new SimpleDateFormat("EEE dd MMM");
Date date1 = new Date();
date1.setDate(picker.getDayOfMonth());
date1.setMonth(picker.getMonth());
final String s = parseFormat.format(date1);
Log.e("DATE", s);
SimpleDateFormat sdf=new SimpleDateFormat("MM-dd-yyyy");
Date date2=new Date();
date2.setDate(picker.getDayOfMonth());
date2.setMonth(picker.getMonth());
final String s2=sdf.format(date2);
//Time picker
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final TimePicker picker = new TimePicker(getActivity());
picker.setIs24HourView(true);
builder.setTitle("Please select time at which you would be leaving :")
.setView(picker)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
int hour = picker.getCurrentHour();
int minute = picker.getCurrentMinute();
leaving.setTextSize(14);
leaving.setText(s + " " + hour + ":" + minute);
inTime=s2+" "+hour+":"+minute;
Log.e("inTime ",inTime);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
leaving.setText("");
inTime="";
dialog.dismiss();
}
}).create().show();
//Time picker
}
}
)
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
leaving.setText("");
inTime="";
dialog.dismiss();
}
}
)
.create().show();
Si prega di aiuto. Grazie
per l'impostazione data minima si può usare 'datePickerobject.setMinDate (System.currentTimeMillis() - 1000);' –
per il massimo 'datePickerobject.setMaxDate (lastdate_converted_in_long);' –