Excepción de puntero nulo de TimePicker al pulsar los botones más o menos

El problema sólo ocurre cuando intento forzar el diseño para mostrar al selector con botones de incremento y decremento. Así que cuando uso este código en mi fragmento y presione "+" o "-" la aplicación se bloquea:

final Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.cust_dialog); LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper); 

Si comento la línea de código arriba, todo funciona bien.
este es el cust_dialog:

 <style name="cust_dialog" parent="@android:style/Theme.NoTitleBar.Fullscreen"></style> 

Este es el stacktrace:

 09-06 01:15:35.947: E/AndroidRuntime(19858): FATAL EXCEPTION: main 09-06 01:15:35.947: E/AndroidRuntime(19858): java.lang.NullPointerException 09-06 01:15:35.947: E/AndroidRuntime(19858): at android.widget.TimePicker.updateInputState(TimePicker.java:580) 09-06 01:15:35.947: E/AndroidRuntime(19858): at android.widget.TimePicker.access$000(TimePicker.java:56) 09-06 01:15:35.947: E/AndroidRuntime(19858): at android.widget.TimePicker$2.onValueChange(TimePicker.java:150) 09-06 01:15:35.947: E/AndroidRuntime(19858): at android.widget.NumberPicker.notifyChange(NumberPicker.java:1776) 09-06 01:15:35.947: E/AndroidRuntime(19858): at android.widget.NumberPicker.setValueInternal(NumberPicker.java:1562) 09-06 01:15:35.947: E/AndroidRuntime(19858): at android.widget.NumberPicker.changeValueByOne(NumberPicker.java:1592) 09-06 01:15:35.947: E/AndroidRuntime(19858): at android.widget.NumberPicker.access$200(NumberPicker.java:90) 09-06 01:15:35.947: E/AndroidRuntime(19858): at android.widget.NumberPicker$1.onClick(NumberPicker.java:633) 09-06 01:15:35.947: E/AndroidRuntime(19858): at android.view.View.performClick(View.java:4202) 09-06 01:15:35.947: E/AndroidRuntime(19858): at android.view.View$PerformClick.run(View.java:17340) 09-06 01:15:35.947: E/AndroidRuntime(19858): at android.os.Handler.handleCallback(Handler.java:725) 09-06 01:15:35.947: E/AndroidRuntime(19858): at android.os.Handler.dispatchMessage(Handler.java:92) 09-06 01:15:35.947: E/AndroidRuntime(19858): at android.os.Looper.loop(Looper.java:137) 09-06 01:15:35.947: E/AndroidRuntime(19858): at android.app.ActivityThread.main(ActivityThread.java:5039) 09-06 01:15:35.947: E/AndroidRuntime(19858): at java.lang.reflect.Method.invokeNative(Native Method) 09-06 01:15:35.947: E/AndroidRuntime(19858): at java.lang.reflect.Method.invoke(Method.java:511) 09-06 01:15:35.947: E/AndroidRuntime(19858): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 09-06 01:15:35.947: E/AndroidRuntime(19858): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 09-06 01:15:35.947: E/AndroidRuntime(19858): at dalvik.system.NativeStart.main(Native Method) 

¿Cómo puedo solucionar esto?

Añadir etiqueta dentro del timepicker. esto funciona para mi:

 <TimePicker android:id="@+id/timePicker" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal"> <requestFocus /> </TimePicker> 

Referencia: http://blog.csdn.net/ljb_blog/article/details/9153435

El problema parece ser todavía sin resolver y un error conocido. En mi caso, cuando hice clic en EditText se produjo una excepción nullPointer. Mi trabajo alrededor era iterating a través de niños hasta que EditText fue encontrado y lo fijó la característica "focusable" a falso.

Recursivamente,

 // level is just a counter for reading better Logs private void hideFocusable(ViewGroup vg, int level) { for(int i=0; i < vg.getChildCount(); i++) { try { ViewGroup vt = (ViewGroup) vg.getChildAt(i); Log.i("NODE",level+") "+ vg.getChildAt(i).getClass().getName()); hideFocusable(vt, level+1); }catch (ClassCastException e) { View vf = (View) vg.getChildAt(i); Log.i("LEAF",level+") "+ vf.getClass().getName()); // here you can pick EditText and setFocusable to false if(vf.getClass().equals(EditText.class)) vf.setFocusable(false); } } } 

Tenía el mismo problema en el API nivel 19 (4.4) con NPE en TimePicker: 695. El problema era que fijé el onTimeChangedListener antes de fijar 24HourView a verdad.

Incorrecto:

 timePicker = (TimePicker) viewContent.findViewById(R.id.timePicker); timePicker.setOnTimeChangedListener(listener); timePicker.setIs24HourView(true); 

Trabajando:

 timePicker = (TimePicker) viewContent.findViewById(R.id.timePicker); timePicker.setIs24HourView(true); timePicker.setOnTimeChangedListener(listener); 

a) Cambiar el estilo

Tuve que cambiar el tema de mi aplicación a android:Theme.Black en mi AndroidManifest.xml

  <application android:name="com.tunapui.news" android:allowBackup="false" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppBaseTheme" > 

añadir este estilo a styles.xml

  <style name="AppBaseTheme" parent="android:Theme.Black" /> 

El estilo de mi fragmento es diferente, pero ahora funciona.

introduzca la descripción de la imagen aquí

Actualizar:

b) Uso de la propiedad android:descendantFocusability="blocksDescendants"

Creo que el problema está relacionado con el enfoque cuando el teclado virtual está en la pantalla, ahora sin cambiar el estilo i añadir la propiedad android:descendantFocusability="blocksDescendants" a mi TimePicker, y funciona como un encanto :).

  <TimePicker android:id="@+id/toTimePicker" android:layout_width="wrap_content" android:layout_height="wrap_content" android:descendantFocusability="blocksDescendants" /> 

Resolví el problema con

  timePicker.setSaveEnabled(false); 
  • TimePickerDialog y AM o PM
  • Android: Cómo obtener el tiempo de un TimePicker cuando se escribe en
  • Diálogo de selección de fecha y hora
  • Android - ¿Cómo puedo cambiar el textColor en un TimePicker?
  • Cómo cambiar el color predeterminado del diálogo DatePicker y TimePicker en Android?
  • Android: ¿cómo tener este tipo de selección de tiempo?
  • Convertir la fecha y la hora en milisegundos en Android
  • ¿Cómo configurar el TimePickerDialog a 24 horas?
  • BetterPickers sin una biblioteca de soporte
  • ¿Cómo puedo agregar un nuevo botón en el widget del selector de fechas en android?
  • ¿Cómo agregar timePicker usando fragmento?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.