Android: ¿por qué Callback OnDateChange se llama dos veces?

Estoy trabajando en una aplicación de Android que en un punto utiliza un widget DatePicker, pero he notado que cada vez que intento cambiar la fecha, la llamada de llamada OnDateChange se llama dos veces. Podría vivir con eso si la nueva fecha era consistente en todos los dispositivos, pero acabo de notar que en emulador primero se llama con la fecha buena pero la segunda vez con la fecha vieja.

este es el registro impreso dentro de la devolución de llamada:

12-18 20:29:12.285: E/MyOnDateChangeListener(5301): android.widget.DatePicker@43da7f90; year=2011; monthOfYear=11; dayOfMonth=19 12-18 20:29:12.355: E/MyOnDateChangeListener(5301): android.widget.DatePicker@43da7f90; year=2011; monthOfYear=11; dayOfMonth=18 

¿Me estoy perdiendo de algo?

Tenga en cuenta que en los registros desde el teléfono (Nexus S) en ambas ocasiones tengo la nueva fecha.

Aquí está el oyente:

 public class MyOnDateChangeListener implements OnDateChangedListener { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Log.e("MyOnDateChangeListener", view.toString() + "; year=" + year + "; monthOfYear=" + monthOfYear + "; dayOfMonth=" + dayOfMonth); Date date = new Date(); date.setDate(dayOfMonth); date.setMonth(monthOfYear); date.setYear(year - 1900); // TODO: modify the list content. ListEventsByDate(date); } } 

Y aquí está la parte creación / registro:

  currentDate = new Date(); currentDate.setDate(day); currentDate.setMonth(month); currentDate.setYear(year - 1900); MyOnDateChangeListener onDateChangeListener = new MyOnDateChangeListener(); eventDatePicker.init(year, month, day, onDateChangeListener); try { eventDatePicker.setMinDate(currentDate.getTime() - DAY_IN_MILIS); } catch (Throwable e) { Log.e("ERR", "no MinDate method available"); }; 

Me olvidé de mencionar que si escribo la fecha en los campos de texto está bien, el problema que estoy hablando es sólo cuando pulse los botones '+' y '-'.

Encontré el problema. Fue por mi código. En el método ListEventsByDate () estaba cambiando el foco en la lista debajo del DatePicker y que activó la segunda llamada!

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.