Cargando Array de entero desde xml

Tengo un arreglo del entero en un archivo del xml como sigue

<integer-array name="myArray"> <item>@drawable/pic1</item> <item>@drawable/pic2</item> <item>@drawable/pic3</item> <item>@drawable/pic4</item> </integer-array> 

En el código, estoy intentando cargar esta matriz

 int[] picArray = getResources().getIntArray(R.array.myArray); 

El resultado esperado es

 R.drawable.pic1, R.drawable.pic2,R.drawable.pic3 

sino que viene con una matriz con todos los valores como cero

¿Puede alguien decirme lo que está mal?

Necesita obtener una matriz con id de sus imágenes. Probablemente este artículo le ayuda. Y por lo tanto el código que probablemente necesita:

 int[] picArray = new int[4]; for (int i = 1; i <=4; i++) { try { Class res = R.drawable.class; Field field = res.getField("pic"+i); picArray[i-1] = field.getInt(null); } catch (Exception e) { Log.e("MyTag", "Failure to get drawable id.", e); } } 

Encontré esta solución :

 TypedArray ar = context.getResources().obtainTypedArray(R.array.myArray); int len = ar.length(); int[] picArray = new int[len]; for (int i = 0; i < len; i++) picArray[i] = ar.getResourceId(i, 0); ar.recycle(); // Do stuff with resolved reference array, resIds[]... for (int i = 0; i < len; i++) Log.v (TAG, "Res Id " + i + " is " + Integer.toHexString(picArray[i])); 

Y el archivo xml de recursos podría ser:

 <resources> <integer-array name="myArray"> <item>@drawable/pic1</item> <item>@drawable/pic2</item> <item>@drawable/pic3</item> <item>@drawable/pic4</item> </integer-array> </resources> 

Parece que podría estar hablando de matrices de matrices?

si es así, una matriz tipada debería tener este aspecto:

 <?xml version="1.0" encoding="utf-8"?> <resources> <array name="icons"> <item>@drawable/home</item> <item>@drawable/settings</item> <item>@drawable/logout</item> </array> <array name="colors"> <item>#FFFF0000</item> <item>#FF00FF00</item> <item>#FF0000FF</item> </array> </resources> 

¿Puedes mostrarnos tu archivo xml real para que podamos ayudarte?

EDIT: Sí, esos no son enteros. convertirlo en una matriz de recursos si desea almacenar recursos.

Sólo haz de ella una matriz de recursos normal. Podrías hacerlo así:

 <?xml version="1.0" encoding="utf-8"?> <resources> <array name="icons"> <item>@drawable/home</item> <item>@drawable/settings</item> <item>@drawable/logout</item> </array> </resources> 

Entonces no haga un int [] apenas haga un TypedArray como esto:

 TypedArray icons = getResources().obtainTypedArray(R.array.icons); 

y conseguirlo con:

 imageview.setImageDrawable(mIcons.getDrawable(position)); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.