Spinner no puede cargar una matriz de números enteros?

Tengo una aplicación, que tiene un Spinner que quiero poblado con algunos números (4,8,12,16). Creé un objeto de matriz de integer en strings.xml con los elementos mencionados anteriormente, establezco las entradas del Spinner en la matriz de enteros y cuando ejecuto la aplicación obtengo:

04-19 23:38:48.016: ERROR/AndroidRuntime(10193): java.lang.NullPointerException 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:198) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.View.measure(View.java:7965) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2989) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.measureVertical(LinearLayout.java:350) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.View.measure(View.java:7965) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2989) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.View.measure(View.java:7965) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.measureVertical(LinearLayout.java:464) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.View.measure(View.java:7965) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2989) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.View.measure(View.java:7965) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.ViewRoot.performTraversals(ViewRoot.java:763) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.ViewRoot.handleMessage(ViewRoot.java:1632) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.os.Handler.dispatchMessage(Handler.java:99) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.os.Looper.loop(Looper.java:123) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.app.ActivityThread.main(ActivityThread.java:4310) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at java.lang.reflect.Method.invokeNative(Native Method) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at java.lang.reflect.Method.invoke(Method.java:521) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at dalvik.system.NativeStart.main(Native Method) 

Tan pronto como cambié la matriz a una matriz de cadenas, esto funciona bien. ¿Esto es normal? Me doy cuenta de que puedo (y voy a) sólo convertir los valores de la matriz de cadena a un int, pero parece extraño que tengo que.

¡Gracias!

EDIT: ¿Alguien? ¿Cualquier cosa?

Lo que está intentando hacer no es compatible.

Es probable que tenga algún código que se ve así:

 ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.numbers, android.R.layout.simple_spinner_item); 

Que es, por supuesto, llamar a lo siguiente:

 /** * Creates a new ArrayAdapter from external resources. The content of the array * is obtained through {@link android.content.res.Resources#getTextArray(int)}. * * @param context The application's environment. * @param textArrayResId The identifier of the array to use as the data source. * @param textViewResId The identifier of the layout used to create views. * * @return An ArrayAdapter<CharSequence>. */ public static ArrayAdapter<CharSequence> createFromResource(Context context, int textArrayResId, int textViewResId) { CharSequence[] strings = context.getResources().getTextArray(textArrayResId); return new ArrayAdapter<CharSequence>(context, textViewResId, strings); } 

La llamada a getTextArray devuelve una matriz con objetos nulos en lugar de la representación de cadena de los valores en la matriz de enteros. Excavar profundamente revela el origen del problema en un método de AssetManager :

 /** * Retrieve the text array associated with a particular resource * identifier. * @param id Resource id of the string array */ /*package*/ final CharSequence[] getResourceTextArray(final int id) { int[] rawInfoArray = getArrayStringInfo(id); int rawInfoArrayLen = rawInfoArray.length; final int infoArrayLen = rawInfoArrayLen / 2; int block; int index; CharSequence[] retArray = new CharSequence[infoArrayLen]; for (int i = 0, j = 0; i < rawInfoArrayLen; i = i + 2, j++) { block = rawInfoArray[i]; index = rawInfoArray[i + 1]; retArray[j] = index >= 0 ? mStringBlocks[block].get(index) : null; } return retArray; } 

Este código supone que ha proporcionado el identificador de recursos de una matriz de cadenas y, por lo tanto, no puede extraer correctamente los valores de la matriz de enteros.

Para superar este problema, simplemente coloque comillas alrededor de sus valores int

 <array name="spinner_value"> <item>"18"</item> <item>"8"</item> </array> 
  • ¿Cómo cambiar el tamaño del texto y el color de texto del hilandero?
  • Cómo configurar el texto del hilandero actual sin cambiar los elementos de la lista de selección asociada
  • ¿Cómo obtener el valor de Spinner?
  • Establecer TextSize a un texto en spinner en android programatically
  • Android Spinner - ¿Cómo hacer que la vista desplegable sea transparente?
  • ¿Cómo hago para que el estado "deshabilitado" de un Spinner esté deshabilitado?
  • Cómo colorear y alinear el elemento spinner en android?
  • Cómo agregar una pista en spinner en XML
  • Fragmento de carga de hiladora / diálogo en Honeycomb
  • Android.database.sqlite.SQLiteCursor@435b9ba0
  • Cómo ocultar spinner dropdown android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.