Cómo desactivar las fechas anteriores a la fecha de hoy en DatePickerDialog Android?

Quiero deshabilitar las fechas anteriores a la fecha de hoy en el DatePickerDialog. Soy nuevo en android por favor me sugieren 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, sugerirme lo que tiene que hacer

Vea 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

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/btnChangeDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Change Date" /> <TextView android:id="@+id/lblDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Current Date (MD-YYYY): " android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/tvDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout> 

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

Pase a la fecha mínima (en milisegundos de Epoch) que tiene que establecer.

Así que 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:

Ok, así que cuando la creación de su DatePickerDialog, antes de mostrarlo, sólo tiene que guardarlo en una variable, establecer la fecha mínima y luego mostrarlo.

 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.

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!

// Crear una nueva instancia de DatePickerDialog y devolverla

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

Tengo la solución. Espero que ayude a alguien static 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; } 
  • ¿Cómo obtener la altura y el ancho del dispositivo en Runtime?
  • ¿Cómo quitar los botones / menú suaves en sandwitch del helado del androide?
  • ¿Cómo puedo hacer que mi botón se parezca más al botón de acción flotante de Android JellyBean (v21)?
  • Fragmento getView () siempre devuelve null para Fragments creado por un FragmentStatePagerAdapter
  • La regla relativa de RelativeLayout "RelativeLayout.LEFT_OF" no funciona
  • RelativeLayout zorder lollipop
  • Animar el ángulo de barrido de Android Ring Shape
  • Compruebe si elemento de vista se agrega al diseño o no se programa
  • Contenido de Android
  • Android: Adición de texto de sub-artículo de ListView
  • Rellene Listview desde el origen de la matriz de cadenas, con un String ArrayAdapter
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.