TimePickerDialog.onTimeSetListener no se llama

Estoy utilizando el código siguiente para mostrar un TimePickerDialog :

 TimePickerDialog dialog = new TimePickerDialog(this, new OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { System.out.println("onTimeSet"); } }, 20, 15, true); dialog.setTitle("Test"); dialog.setButton(TimePickerDialog.BUTTON_POSITIVE, "Done", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.out.println("Done"); } }); dialog.setButton(TimePickerDialog.BUTTON_NEGATIVE, "Cancel", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.out.println("Cancel"); } }); dialog.show(); 

En un dispositivo con Android 2.3.7, el método onTimeSet no se llama (los métodos onClick hacen). En un dispositivo que ejecuta 4.2.2 el onTimeSet se llama como debería.

¿Que está sucediendo aquí?

TimePickerDialog ha cambiado después de Android 4.1.1 y hay un error sobre la cancelación de los dos TimePickerDialog y DatePickerDialog. Por favor, lea primero aquí . Por defecto, no es necesario establecer el botón positivo y negativo. TimePickerDialog y DatePickerDialog se ocupan de estos para usted. Tan si este problema de la cancelación no es importante para usted elimina el ajuste del botón positivo y negativo. Si eliminas las de ambas versiones si el usuario hace clic en el botón Aceptar se llamará tu método onTimeSet.

Pero yo recomiendo hasta que el error será fijo uso personalizado hecho AlertDialog con TimePicker widget;

  final TimePicker timePicker = new TimePicker(this); timePicker.setIs24HourView(true); timePicker.setCurrentHour(20); timePicker.setCurrentMinute(15); new AlertDialog.Builder(this) .setTitle("Test") .setPositiveButton(android.R.string.ok, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.d("Picker", timePicker.getCurrentHour() + ":" + timePicker.getCurrentMinute()); } }) .setNegativeButton(android.R.string.cancel, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.d("Picker", "Cancelled!"); } }).setView(timePicker).show(); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.