¿Cómo usar OnDateChangedListener, OnDateSetListener sin usar datepickerdialog?

Quiero ser capaz de detectar cambios en datepicker tan pronto como el usuario comience a cambiarlo. Sin embargo, no quiero usar datrpickerdialog. ¿Alguien sabe por qué el onDateSet (DatePicker arg0, int arg1, int arg2, int arg3) no se dispara cuando cambio la fecha en datepicker?

Agradecería mucho cualquier comentario sobre eso. Aclamaciones

Aquí está la versión simplificada de mi código:

public class AddItem extends Activity implements OnDateChangedListener,OnDateSetListener{ DatePicker start ; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.entryelements); start = (DatePicker) findViewById(R.id.start); @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), " thiv view"+year, Toast.LENGTH_LONG).show(); Log.v("indatechange", "ok"); } @Override public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), " thiv view"+arg0, Toast.LENGTH_LONG).show(); Log.v("indatechange", "ok"); } 

}

Debe informar al DatePicker sobre su OnDateChangedListener. Desemejante de los widgets regulares un DatePicker no tiene setOnDateChangedListener() … pero tiene init() . Utilice init() para establecer la fecha predeterminada y declarar al oyente:

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.entryelements); // Set the date to now Calendar calendar = Calendar.getInstance(); start = (DatePicker) findViewById(R.id.start); start.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), this); } 

Tendrá que llamar al método init (año, mes, día, onDateChangedListener) en su DatePicker para configurarlo, si desea estar informado proactivamente de las interacciones.

Suponiendo que desea inicializarlo para mostrar una fecha particular para empezar, tiene sentido llamar a esto en lugar de su método updateDate (¿qué es lo que estás haciendo? ¿O no te importa cuál es el valor inicial?)

Tenga en cuenta que no admite un OnDateSetListener de la misma manera que DatePickerDialog, ya que implicaría que la interfaz de usuario tiene alguna forma de saber cuándo el usuario ha terminado de interactuar con el selector. Puesto que no es un diálogo, usted tiene que decidir usted mismo cuando usted piensa que han terminado. Simplemente mantenga un registro con OnDateChangedListener, y tendrá sentido.

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.entryelements); start = (DatePicker) findViewById(R.id.start); expirationDate=(EditText) findViewById(R.id.expirationDate); Calendar calendar = Calendar.getInstance(); start = (DatePicker) findViewById(R.id.start); MyOnDateChangeListener onDateChangeListener = new MyOnDateChangeListener(); start.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), onDateChangeListener); } public class MyOnDateChangeListener implements OnDateChangedListener { @Override public void onDateChanged(DatePicker view, int year, int month, int day) { int mon=month+1; expirationDate.setText(day+"/"+mon+"/"+year); } } 
 DatePicker dpEndDate,dpStartDate; dpStartDate=(DatePicker)findViewById(R.id.dpStartDate); dpEndDate=(DatePicker)findViewById(R.id.dpEndDate); Calendar today = Calendar.getInstance(); dpStartDate.init(today.get(Calendar.YEAR), today.get(Calendar.MONTH), today.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { SmartUtils.ting(MicaAttendanceFilter.this,"Start Date Changes"); try { SimpleDateFormat simpleDateFormat=new SimpleDateFormat("dd M yyyy"); Calendar startCalendar = Calendar.getInstance(); int startDay=dpStartDate.getDayOfMonth(); int startMonth=dpStartDate.getMonth()+1; int startYear=dpStartDate.getYear(); String startDate = startDay+" "+startMonth+" "+startYear; startCalendar.setTime(simpleDateFormat.parse(startDate)); dpEndDate.setMinDate(startCalendar.getTimeInMillis()); } catch (ParseException e) { e.printStackTrace(); } } } ); 
  • Cómo evitar la fecha seleccionada pasada en DatePickerDialog (setMinDate no funciona como se esperaba)
  • NullPointerException al usar DatePicker setMaxDate () en un DatePickerDialog
  • DatePickerDialog muestra el selector del año primero
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.