La aplicación de Android se bloquea con NullPointerException en ChoreoGrapher

Tengo el código siguiente, intentando crear un ListAdapter simple en un ListView (tenía este código que trabajaba antes y éste es el único lugar que he cambiado algo):

public BuddyListAdapter(Context context, HashMap<String, Buddy> hashMap) { buddyList = new ArrayList<Buddy>(hashMap.values()); mInflater = LayoutInflater.from(context); ctx = context; } 

Cuando paso a través, no pasa nada, pero cuando se ejecuta, obtengo una NullPointerException en ChoreoGrapher.doCallbacks , cuando creo una ArrayList vacía, no se bloquea:

 public BuddyListAdapter(Context context, HashMap<String, Buddy> hashMap) { buddyList = new ArrayList<Buddy>(); mInflater = LayoutInflater.from(context); ctx = context; } 

¿Qué es el ChoreoGrapher y por qué está ChoreoGrapher mi aplicación?

Estoy completamente atascado en lo que podría ser el problema, o cómo averiguar lo que está mal. El depurador de Eclipse o información de fallo no está ayudando realmente.

La traza de pila completa es la siguiente:

 Thread [<1> main] (Suspended (exception NullPointerException)) Choreographer.doCallbacks(int, long) line: 558 Choreographer.doFrame(long, int) line: 525 Choreographer$FrameDisplayEventReceiver.run() line: 711 Handler.handleCallback(Message) line: 615 Choreographer$FrameHandler(Handler).dispatchMessage(Message) line: 92 Looper.loop() line: 137 ActivityThread.main(String[]) line: 4745 Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] Method.invoke(Object, Object...) line: 511 ZygoteInit$MethodAndArgsCaller.run() line: 786 ZygoteInit.main(String[]) line: 553 NativeStart.main(String[]) line: not available [native method] 

También tengo un Handler en la actividad principal. Cuando no está haciendo nada, el listview no se bloquea. Sin embargo, eliminar todas las devoluciones de llamada antes de abrir el listview.

Tengo este error en mi aplicación sólo en Android 4.4.

En el depurador muestra el mismo mensaje que la pregunta asker. Sin embargo, al no depurar el stacktrace completo en DDMS es:

Trayectoria de pila completa:

 11-13 16:34:53.088: E/AndroidRuntime(1964): FATAL EXCEPTION: main 11-13 16:34:53.088: E/AndroidRuntime(1964): Process: appname, PID: 1964 11-13 16:34:53.088: E/AndroidRuntime(1964): java.lang.NullPointerException 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.widget.TextView.makeNewLayout(TextView.java:6124) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.widget.TextView.onMeasure(TextView.java:6419) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.View.measure(View.java:16458) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.widget.Spinner.setUpChild(Spinner.java:632) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.widget.Spinner.makeView(Spinner.java:585) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.widget.Spinner.getBaseline(Spinner.java:431) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1262) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.widget.LinearLayout.onMeasure(LinearLayout.java:590) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.View.measure(View.java:16458) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.View.measure(View.java:16458) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.View.measure(View.java:16458) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 11-13 16:34:53.088: E/AndroidRuntime(1964): at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.View.measure(View.java:16458) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 11-13 16:34:53.088: E/AndroidRuntime(1964): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2289) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.View.measure(View.java:16458) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1914) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1111) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1293) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5582) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.Choreographer.doCallbacks(Choreographer.java:562) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.Choreographer.doFrame(Choreographer.java:532) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.os.Handler.handleCallback(Handler.java:733) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.os.Handler.dispatchMessage(Handler.java:95) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.os.Looper.loop(Looper.java:137) 11-13 16:34:53.088: E/AndroidRuntime(1964): at android.app.ActivityThread.main(ActivityThread.java:4998) 11-13 16:34:53.088: E/AndroidRuntime(1964): at java.lang.reflect.Method.invokeNative(Native Method) 11-13 16:34:53.088: E/AndroidRuntime(1964): at java.lang.reflect.Method.invoke(Method.java:515) 11-13 16:34:53.088: E/AndroidRuntime(1964): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 11-13 16:34:53.088: E/AndroidRuntime(1964): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 11-13 16:34:53.088: E/AndroidRuntime(1964): at dalvik.system.NativeStart.main(Native Method) 

Mirando a través del código fuente 4,4 de TextView en la línea 6124, resulta que esto es causado por falta de params de diseño al elipses. Esto es extraño, ya que el código está fallando dentro de un ListAdapter , donde no se proporcionan parámetros de diseño en getView .

Utilizaba para inflar android.R.layout.simple_spinner_item para artículos estándar del hilandero. Parece que este elemento utiliza ellipsing . Así que en mi getView ahora llamo:

 view.setEllipsize(null); 

Esto soluciona mis problemas en Android 4.4.

Editar

Resulta que el problema no es el ellipsing, pero inflación incorrecta de una vista en getView .

 inflater.inflate(android.R.layout.simple_spinner_item, null);//WRONG inflater.inflate(android.R.layout.simple_spinner_item, parent, false);//GOOD 

Tenga en cuenta que el suministro false para no adjuntar la vista inmediatamente a los padres, ya que se trata de un adaptador que se conecta a los niños cuando sea necesario. De lo contrario obtendrá errores.

Cuando se infla correctamente, no es necesario establecer ellipseSize a null . Esto se debe a que cuando se infla la buena manera, con un padre, que maneja el LayoutParams correctamente, haciendo que el código de elipse no levante NullPointerException .

Por lo tanto, infle correctamente, y entonces usted no tiene que preocuparse más.

Estoy teniendo la misma cosa otra vez en otra aplicación. Parece ser causado por una excepción no controlada en getView en el adaptador de lista.

Compruebe si hay lugares en los que puede haber inválidos de tipos al manipular sus vistas en el código. Tuve exactamente el mismo error con esta línea

 picture.setLayoutParams(new ViewGroup.LayoutParams(50, 50)); 

El Coreógrafo estaba lanzando este error "android.view.ViewGroup $ LayoutParams no se puede convertir en android.widget.LinearLayout $ LayoutParams"

Cambiándolo a

 picture.setLayoutParams(new android.widget.LinearLayout.LayoutParams(50, 50)); 

arreglar el problema.

  • JSON `date (...)` a `java.Util.Date` usando` org.json`
  • No se puede conectar al servicio de cámara
  • Eliminar SMS en Android 1.5
  • Spring MVC, Thymeleaf y REST
  • Omitir la validación de Eclipse de build.xml
  • Cambiar de fragmento con fragmento de mapa deja una pantalla negra
  • ¿Cómo puedo bajar la versión reducida de una imagen?
  • Sincronización de dos ListViews lado a lado de Android
  • Convertir cadena a Date en java
  • ¿Qué devuelve el método location.Address de cada Android?
  • Android: Generación de onda sinusoidal
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.