KitKat specific- android.content.res.Resources $ NotFoundException: Archivo res / drawable / list_selector_white.xml de ID de recurso extraíble

Intenté la respuesta aquí , pero no funcionó para mí. Estoy utilizando un xml como fondo y obtención de excepción – Resources$NotFoundException: File res/drawable/list_selector_white.xml from drawable resource ID . La aplicación se bloquea al iniciar.

La parte extraña es que está funcionando bien en los dispositivos que ejecutan Lollypop. En OS <= KitKat, este problema está reproduciendo.

XML que se está inflando en el fragmento:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/list_selector_white" > ....Other views here.... 

list_selector_white.xml

 <!-- Selector style for listrow --> <item android:drawable="@drawable/gradient_bg_white" android:state_pressed="false" android:state_selected="false"/> <item android:drawable="@drawable/gradient_bg_hover" android:state_pressed="true"/> <item android:drawable="@drawable/gradient_bg_hover" android:state_pressed="false" android:state_selected="true"/> 

gradient_bg_hover

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <!-- Gradient BgColor for listrow Selected --> <gradient android:startColor="?attr/listViewRow" android:centerColor="?attr/listViewRow" android:endColor="?attr/listViewRow" android:angle="270" /> </shape> 

Logcat:

 E/AndroidRuntime( 3879): android.view.InflateException: Binary XML file line #2: Error inflating class <unknown> E/AndroidRuntime( 3879): at android.view.LayoutInflater.createView(LayoutInflater.java:620) E/AndroidRuntime( 3879): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) E/AndroidRuntime( 3879): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) E/AndroidRuntime( 3879): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) E/AndroidRuntime( 3879): at android.view.LayoutInflater.inflate(LayoutInflater.java:469) E/AndroidRuntime( 3879): at android.view.LayoutInflater.inflate(LayoutInflater.java:397) E/AndroidRuntime( 3879): at android.view.LayoutInflater.inflate(LayoutInflater.java:353) E/AndroidRuntime( 3879): at jsoup.LazyAdapterDoubleList.getView(LazyAdapterDoubleList.java:53) E/AndroidRuntime( 3879): at android.widget.AbsListView.obtainView(AbsListView.java:2263) E/AndroidRuntime( 3879): at android.widget.ListView.measureHeightOfChildren(ListView.java:1263) E/AndroidRuntime( 3879): at android.widget.ListView.onMeasure(ListView.java:1175) E/AndroidRuntime( 3879): at android.view.View.measure(View.java:16497) E/AndroidRuntime( 3879): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719) E/AndroidRuntime( 3879): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455) E/AndroidRuntime( 3879): at android.view.View.measure(View.java:16497) E/AndroidRuntime( 3879): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719) E/AndroidRuntime( 3879): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455) E/AndroidRuntime( 3879): at android.view.View.measure(View.java:16497) E/AndroidRuntime( 3879): at android.support.v4.widget.SwipeRefreshLayout.onMeasure(SwipeRefreshLayout.java:577) E/AndroidRuntime( 3879): at android.view.View.measure(View.java:16497) E/AndroidRuntime( 3879): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) E/AndroidRuntime( 3879): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) E/AndroidRuntime( 3879): at android.view.View.measure(View.java:16497) E/AndroidRuntime( 3879): at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:868) E/AndroidRuntime( 3879): at android.view.View.measure(View.java:16497) E/AndroidRuntime( 3879): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) E/AndroidRuntime( 3879): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) E/AndroidRuntime( 3879): at android.view.View.measure(View.java:16497) E/AndroidRuntime( 3879): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) E/AndroidRuntime( 3879): at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327) E/AndroidRuntime( 3879): at android.view.View.measure(View.java:16497) E/AndroidRuntime( 3879): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) E/AndroidRuntime( 3879): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) E/AndroidRuntime( 3879): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291) E/AndroidRuntime( 3879): at android.view.View.measure(View.java:16497) E/AndroidRuntime( 3879): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916) E/AndroidRuntime( 3879): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113) E/AndroidRuntime( 3879): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295) E/AndroidRuntime( 3879): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000) E/AndroidRuntime( 3879): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670) E/AndroidRuntime( 3879): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) E/AndroidRuntime( 3879): at android.view.Choreographer.doCallbacks(Choreographer.java:574) E/AndroidRuntime( 3879): at android.view.Choreographer.doFrame(Choreographer.java:544) E/AndroidRuntime( 3879): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) E/AndroidRuntime( 3879): at android.os.Handler.handleCallback(Handler.java:733) E/AndroidRuntime( 3879): at android.os.Handler.dispatchMessage(Handler.java:95) E/AndroidRuntime( 3879): at android.os.Looper.loop(Looper.java:136) E/AndroidRuntime( 3879): at android.app.ActivityThread.main(ActivityThread.java:5017) E/AndroidRuntime( 3879): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime( 3879): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) E/AndroidRuntime( 3879): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) E/AndroidRuntime( 3879): Caused by: java.lang.reflect.InvocationTargetException E/AndroidRuntime( 3879): at java.lang.reflect.Constructor.newInstance(Native Method) E/AndroidRuntime( 3879): at android.view.LayoutInflater.createView(LayoutInflater.java:594) E/AndroidRuntime( 3879): ... 50 more E/AndroidRuntime( 3879): Caused by: android.content.res.Resources$NotFoundException: File res/drawable/list_selector_white.xml from drawable resource ID #0x7f02006a E/AndroidRuntime( 3879): at android.content.res.Resources.loadDrawable(Resources.java:2096) E/AndroidRuntime( 3879): at android.content.res.TypedArray.getDrawable(TypedArray.java:602) E/AndroidRuntime( 3879): at android.view.View.<init>(View.jav W/ActivityManager( 589): Force finishing activity free.programming.programming/.MainActivity W/ActivityManager( 589): Activity pause timeout for ActivityRecord{655864a8 u0 free.programming.programming/.MainActivity t49 f} 

Cualquier pista sobre cómo solucionarlo?

[Editar]
Sospecho que usar attr en drawable está causando problemas. Inicialmente, estaba usando simple @color/... y todo funcionaba bien.

Yo tuve el mismo problema. El problema es que usted está utilizando ?attr/ en su drawable. Reemplácela con un @color o @drawable y debería desaparecer. Esto desafortunadamente significa que usted tiene que agrupar un dibujable para cada uno de sus temas, es mucho más limpio en piruleta.

Echa un vistazo a este compromiso de la mía en el proyecto que estoy trabajando, fue para resolver exactamente este problema.

Puedes crear una carpeta drawable-v21 y poner un drawable debajo de ella en esperanzas de un buen momento cuando puedes soportar v21 + pero he elegido ir a la otra ruta y agrupar diferentes recursos de color (algo que puedes ver en la rama principal, I tienen colores verdes del trullo y del defecto).

Finalmente pude arreglar el problema. Voy a publicar la respuesta para que pueda ayudar a los futuros lectores.

El problema es que no podemos dar valores attr a item y gradient . Conseguí el problema fijado teniendo diversos archivos del xml para los colores.

Terminé usando diferentes versiones de list_selector_white_1 y _2.xml para:

 <!-- Selector style for listrow --> <item android:drawable="@drawable/gradient_bg_white_1" android:state_pressed="false" android:state_selected="false"/> <item android:drawable="@drawable/gradient_bg_hover_1" android:state_pressed="true"/> <item android:drawable="@drawable/gradient_bg_hover_1" android:state_pressed="false" android:state_selected="true"/> 

Del mismo modo, cambié gradient_bg_hover y gradient_bg_white a diferentes versiones.

Finalmente, creé un atributo list_selector con formato integer y lo usé en el fragmento xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="?attr/list_selector" > ....Other views here.... 

Estoy esperando el momento en que puedo soportar el nivel API> = 21 en mi aplicación, con el fin de eliminar todos estos hacks.

Básicamente no, es un error que se arregló en Lollipop . La sugerencia (hasta que pueda minSdkVersion=21 ) es crear un archivo XML diferente dibujable para cada color diferente que usted necesita (y tener que como un atributo del tema, supongo).

La pregunta, las respuestas y los comentarios duplicados discuten este insecto: ¿Cómo hacer referencia al atributo del color en drawable?

  • Cómo conservar los nodos XML que no están enlazados a un objeto cuando se utiliza SAX para analizar
  • Cambiar el color del texto del elemento de menú en el cajón de navegación
  • Android ¿Es posible definir un mapa en un archivo XML?
  • manipular XML Layout mediante programación en Android
  • Android: Añadir divisor entre los elementos de RecyclerView
  • ((Botón)) dentro de un servicio no funciona
  • Android: obtiene los elementos de la matriz de cadenas y muestra uno por uno en la vista de texto
  • Ellipsize no funciona para textView dentro de listView personalizado
  • Recurso duplicado del error de Android Studio
  • Agregar nuevo botón a la barra de acción
  • Cómo configurar la transparencia de una imagen de fondo Android xml file
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.