java android nullpointerexception spinner android-4.4-kitkat

java - Extraña NullPointerException en Spinner



android android-4.4-kitkat (3)

Así que reviso esa línea en la clase TextView en el método makeNewLayout y encontré que esta excepción está ocurriendo en esta línea final int height = mLayoutParams.height; Los parámetros de diseño son probablemente nulos ... y esta línea está en el bloque que maneja ellipsar el texto largo ... así que eliminé el atributo textView en xml android:ellipsize="marquee" y luego el problema realmente desaparece ... extraño extraño

Desde Android 4.4 KitKat, tengo errores extraños en mis aplicaciones. Parece que tiene algo que ver con spinner. Este stacktrace de error que estoy recibiendo:

java.lang.NullPointerException at android.widget.TextView.makeNewLayout(TextView.java:6124) at android.widget.TextView.onMeasure(TextView.java:6400) at android.view.View.measure(View.java:16458) at android.widget.Spinner.setUpChild(Spinner.java:632) at android.widget.Spinner.makeView(Spinner.java:595) at android.widget.Spinner.getBaseline(Spinner.java:431) at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1089) at android.widget.LinearLayout.onMeasure(LinearLayout.java:590) at android.view.View.measure(View.java:16458) at com.android.internal.widget.ActionBarView.onMeasure(ActionBarView.java:1011) at android.view.View.measure(View.java:16458) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at com.android.internal.widget.ActionBarContainer.onMeasure(ActionBarContainer.java:271) at android.view.View.measure(View.java:16458) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:254) at android.view.View.measure(View.java:16458) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2289) at android.view.View.measure(View.java:16458) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1914) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1111) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1293) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5582) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) at android.view.Choreographer.doCallbacks(Choreographer.java:562) at android.view.Choreographer.doFrame(Choreographer.java:532) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4998) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) at dalvik.system.NativeStart.main(Native Method)

Tengo navegación de giro en la barra de acción y creo que tiene algo que ver con eso. Estoy usando ABS. Tengo un error de rastreo hacia abajo para obtener el método getView de mi adaptador de matriz de giro. Aquí está mi método getView:

@Override public View getView(int position, View convertView, ViewGroup parent) { if (LoginUtils.isLogged()) { items[Properties.NAVIG_ITEM_MY_PROFILE] = LoginUtils.getTextForAdapter(); } else { items[Properties.NAVIG_ITEM_MY_PROFILE] = context.getString(R.string.userProfile); } View view = convertView; if (view == null) { LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = vi.inflate(R.layout.ab_spinner_item, null); } String text = items[position]; TextView menu = (TextView) view.findViewById(android.R.id.text1); if (title == null) { menu.setText(text); } else { menu.setText(title); } return view; }

Si comento estas líneas:

//if (title == null) { menu.setText(text); // } else { // menu.setText(title); // }

El problema desaparece. ¿Alguien tiene alguna idea?


Como Peterdk describe here . Usted no necesita eliminar

android: ellipsize = "marquee"

Él sugiere usar:

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

Eso solucionó mi problema. Supongo que Android 4.4 está tratando de ser estricto al inflar el diseño.


Gracias. Me salí con la suya al eliminar Android: elipsisize de todos mis diseños.