¿Cómo deshabilitar las fechas antes de la fecha de hoy en DatePickerDialog Android?

Quiero desactivar las fechas anteriores a la fecha de hoy en DatePickerDialog. Soy nuevo en Android, por favor sugiero cómo podría hacer esto. Aquí está mi código que he escrito para DatePickerDialog

final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub myCalendar.set(Calendar.YEAR, year); myCalendar.set(Calendar.MONTH, monthOfYear); myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); updateLabel(val); } }; depart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub new DatePickerDialog(this, date, myCalendar .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show(); val=1; } }); returnDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub new DatePickerDialog(this, date, myCalendar .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show(); val=2; } }); private void updateLabel(int val) { String myFormat = "dd/MM/yy"; //In which you need put here SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US); Log.d("Date vlue ", "==="+sdf.format(myCalendar.getTime())); if(val==1) depart.setText(sdf.format(myCalendar.getTime())); else returnDate.setText(sdf.format(myCalendar.getTime())); } 

Por favor sugiero que tengo que hacer

Mira este ejemplo …!

 import java.util.Calendar; import android.app.Activity; import android.app.DatePickerDialog; import android.app.Dialog; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.DatePicker; import android.widget.TextView; public class MyAndroidAppActivity extends Activity { private TextView tvDisplayDate; private Button btnChangeDate; private int myear; private int mmonth; private int mday; static final int DATE_DIALOG_ID = 999; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setCurrentDateOnView(); addListenerOnButton(); } // display current date public void setCurrentDateOnView() { tvDisplayDate = (TextView) findViewById(R.id.tvDate); final Calendar c = Calendar.getInstance(); myear = c.get(Calendar.YEAR); mmonth = c.get(Calendar.MONTH); mday = c.get(Calendar.DAY_OF_MONTH); // set current date into textview tvDisplayDate.setText(new StringBuilder() // Month is 0 based, just add 1 .append(mmonth + 1).append("-").append(mday).append("-") .append(myear).append(" ")); } public void addListenerOnButton() { btnChangeDate = (Button) findViewById(R.id.btnChangeDate); btnChangeDate.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { showDialog(DATE_DIALOG_ID); } }); } @Override protected Dialog onCreateDialog(int id) { switch (id) { case DATE_DIALOG_ID: // set date picker as current date DatePickerDialog _date = new DatePickerDialog(this, datePickerListener, myear,mmonth, mday){ @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { if (year < myear) view.updateDate(myear, mmonth, mday); if (monthOfYear < mmonth && year == myear) view.updateDate(myear, mmonth, mday); if (dayOfMonth < mday && year == myear && monthOfYear == mmonth) view.updateDate(myear, mmonth, mday); } }; return _date; } return null; } private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { // when dialog box is closed, below method will be called. public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) { myear = selectedYear; mmonth = selectedMonth; mday = selectedDay; // set selected date into textview tvDisplayDate.setText(new StringBuilder().append(mmonth + 1) .append("-").append(mday).append("-").append(myear) .append(" ")); } }; } 

main.xml

       

Obtenga el DatePicker utilizado en su DatePickerDialog con el método getDatePicker () y use el método setMinDate (Long millis) .

Pasele la fecha mínima (en milisegundos desde Epoch) que debe establecer.

Entonces puedes hacer algo como

 SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); Date d = sdf.parse("21/12/2012"); DatePicker datePicker = date.getDatePicker(); datePicker.setMinDate(d.getTime()); 

EDITAR:

bien, entonces cuando cree su DatePickerDialog, antes de mostrarlo, simplemente guárdelo en una variable, establezca la fecha mínima y luego muéstrela.

 DatePickerDialog dpd = new DatePickerDialog(IweenFlightSearch.this, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); Date d = sdf.parse("21/12/2012"); dpd.getDatePicker().setMinDate(d.getTime()); dpd.show(); 

Esto debería funcionar.

// Crea una nueva instancia de DatePickerDialog y la devuelve

  DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), this,year,month,day); datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis()); return datePickerDialog; 

Sé que es demasiado tarde. Pero espero que esto ayude. Utilizar

 date .getDatePicker().setMinDate(System.currentTimeMillis() - 1000); 

en su caso, la fecha es DatePickerDialog

¡Aclamaciones!

Obtuve la solución. Espero que ayude a alguien estático final int DATE_DIALOG_ID = 999;

 depart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub showDialog(DATE_DIALOG_ID); } }); protected Dialog onCreateDialog(int id) { final Calendar now = Calendar.getInstance(); switch (id) { case DATE_DIALOG_ID: // set date picker as current date DatePickerDialog _date = new DatePickerDialog(this, date,myCalendar .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)){ @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { if (year < now.get(Calendar.YEAR)) view.updateDate(myCalendar .get(Calendar.YEAR), myCalendar .get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)); if (monthOfYear < now.get(Calendar.MONTH) && year == now.get(Calendar.YEAR)) view.updateDate(myCalendar .get(Calendar.YEAR), myCalendar .get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)); if (dayOfMonth < now.get(Calendar.DAY_OF_MONTH) && year == now.get(Calendar.YEAR) && monthOfYear == now.get(Calendar.MONTH)) view.updateDate(myCalendar .get(Calendar.YEAR), myCalendar .get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)); } }; return _date; } return null; }