Cómo corregir NPE en ViewRoot # updateBidiOptions?

En la consola de desarrolladores del mercado de Android, estamos recibiendo un montón de trazas de pila como esta (enviadas por los usuarios cuando nuestra aplicación se bloquea):

java.lang.NullPointerException at android.view.ViewRoot.updateBidiOptions(ViewRoot.java:290) at android.view.ViewRoot.performTraversals(ViewRoot.java:737) at android.view.ViewRoot.handleMessage(ViewRoot.java:1792) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:143) at android.app.ActivityThread.main(ActivityThread.java:5068) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:521) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) at dalvik.system.NativeStart.main(Native Method) 

No hemos sido capaces de reproducir el bloqueo y también cuando comprobamos el código fuente de Android, no hay ningún método llamado updateBidiOptions. Los comentarios del usuario parecen sugerir que el accidente ocurre cuando se centran en un EditText . Muchos de los usuarios también mencionan que esto sucede en HTC Desire HD, pero no se está estrellando en los deseos que tenemos aquí.

¿Cómo podemos solucionar este problema?

Por lo general, cuando ve un NPE en un stacktrace que no implica ningún código propio, en algún momento ha pasado null como un parámetro al marco de Android en el que no se supone que.

Así que si usted tiene algún lugar en el código en el que podría estar en duda si está pasando null como una opción, verifique que se le permite hacer eso.

De lo contrario, ¿en qué versión de Android se está produciendo este accidente?

Si tenemos la fuente correcta para android.view.ViewRoot.updateBidiOptions(ViewRoot.java:290) debemos ser capaces de ver qué referencia se está haciendo referencia y es una referencia nula. Y retroceda desde allí hasta que veamos una referencia proporcionada desde su fuente (que es probablemente también nula).

Sin embargo, cuando miro la fuente para ViewRoot.java en mi clon de pan de jengibre, ni siquiera veo el método updateBidiOptions() . Por lo tanto, necesito saber la versión aproximada de Android que se está utilizando, para dar una conjetura educada sobre qué referencia podría ser.

Sólo para terminar este: el problema era con una ROM personalizada (B0.8). El problema se resolvió cuando ROM se actualizó a B0.8.4 que ya no llama a updateBidiOptions.

Ok la solución fácil será esto: localiza la línea que actaully trae esto en tu código si dices que este es el edittext, así que envuelve todo lo que pertenece a él, en try and catch, entonces en el catch try haz lo que era Se supone que hacer en la primera vez, si es para dar el enfoque edittext, solicitar la focuse para ello.

Espero que esto ayude, Saludos cordiales.

Parece como si 1 de 2 posibles cosas están sucediendo aquí.

Es posible que los investigadores del MIT hayan optado por utilizar su aplicación para probar un poco de tecnología experimental denominada BiDi Screen . Probablemente modificaron algunos de los sistemas operativos de Android y lo recompilaron para que interfirieran con su tecnología experimental, posiblemente ejecutándose en algún dispositivo móvil experimental. Puede haber desenterrado uno de los "proyectos negros" de Google.

Otra idea es que está buscando un error de "localización de cadenas" de otro país. Véase Clase Bidi .

Un objeto Bidi proporciona información sobre el reordenamiento bidireccional del texto utilizado para crearlo. Esto es necesario, por ejemplo, para mostrar correctamente el texto en árabe o en hebreo. Estos lenguajes son intrínsecamente mezclados direccionalmente, ya que ordenan números de izquierda a derecha mientras ordena la mayoría del texto de derecha a izquierda.

Puesto que usted trabaja para una empresa más grande, pídale a su superior que le envíe un viaje de recolección de información a uno de los países de la Primavera Árabe para recopilar 'en datos de campo' sobre por qué su aplicación se está estrellando con tanta frecuencia.

  • Evitar intentar / capturar en Android
  • ¿Cómo puedo detener mi aplicación de zombifying después de manejar una Excepción sin atrapar?
  • Mi aplicación Android se bloquea aunque estoy captando la excepción que dice está causando el fallo
  • En Java, si un puntero nulo sucede muy raramente es mejor usar catch en lugar de if
  • ¿Ha perdido la traza de la pila de excepciones en Google Analytics v2 para Android?
  • Tratar las excepciones (de proceso cruzado) en el proveedor de contenido personalizado de Android
  • Manejo de excepciones de Android
  • manejar excepciones no controladas en Android
  • Manejadores de excepciones globales en Java
  • Mkdirs aways devuelve false en Android 5.1
  • Cómo implementar uncaughtException android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.