Reputation: 1556
I'm trying to populate a spinner with a string array using an array adapter on my android application. The code appears sound to me, hence me asking the wonderful community at SO.
Here is my populating function:
private void populateSpinners(String intentMessage)
{
//initialize variables and get spinners, resources
Resources res = getResources();
String[] types = null;
Spinner iHaveSpinner = (Spinner) findViewById(R.id.iHaveSpinner);
Spinner iWantSpinner = (Spinner) findViewById(R.id.iWantSpinner);
//grab appropriate array for unit types
if(intentMessage.equalsIgnoreCase("Force"))
types = res.getStringArray(R.array.ForceArray);
//initialize adapter and populate spinners
ArrayAdapter<String> typeAdapter = new ArrayAdapter<String>(this,R.id.iHaveSpinner,types);
iHaveSpinner.setAdapter(typeAdapter);
iWantSpinner.setAdapter(typeAdapter);
}
and my logcat:
09-01 17:17:50.491: E/AndroidRuntime(15264): FATAL EXCEPTION: main 09-01 17:17:50.491: E/AndroidRuntime(15264): android.content.res.Resources$NotFoundException: Resource ID #0x7f090003 type #0x12 is not valid 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.content.res.Resources.loadXmlResourceParser(Resources.java:2136) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.content.res.Resources.getLayout(Resources.java:865) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.LayoutInflater.inflate(LayoutInflater.java:394) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:371) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:193) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.widget.Spinner.onMeasure(Spinner.java:439) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.View.measure(View.java:15395) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.View.measure(View.java:15395) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.View.measure(View.java:15395) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.widget.LinearLayout.measureVertical(LinearLayout.java:833) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.widget.LinearLayout.onMeasure(LinearLayout.java:574) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.View.measure(View.java:15395) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 09-01 17:17:50.491: E/AndroidRuntime(15264): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2362) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.View.measure(View.java:15395) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1985) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1226) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1399) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1119) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4553) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.Choreographer.doCallbacks(Choreographer.java:555) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.Choreographer.doFrame(Choreographer.java:525) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.os.Handler.handleCallback(Handler.java:615) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.os.Handler.dispatchMessage(Handler.java:92) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.os.Looper.loop(Looper.java:137) 09-01 17:17:50.491: E/AndroidRuntime(15264): at android.app.ActivityThread.main(ActivityThread.java:4950) 09-01 17:17:50.491: E/AndroidRuntime(15264): at java.lang.reflect.Method.invokeNative(Native Method) 09-01 17:17:50.491: E/AndroidRuntime(15264): at java.lang.reflect.Method.invoke(Method.java:511) 09-01 17:17:50.491: E/AndroidRuntime(15264): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 09-01 17:17:50.491: E/AndroidRuntime(15264): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 09-01 17:17:50.491: E/AndroidRuntime(15264): at dalvik.system.NativeStart.main(Native Method)
My catch is that I can't seem to find any references to my code (hopefully I'm right there, speaking to my reading skills...), and I'm fairly new at Android so I'm not the best at catching other runtime errors.
Thanks SO!!!
kH
Upvotes: 1
Views: 2512
Reputation: 45493
Resource ID #0x7f090003 type #0x12 is not valid
The reason for that exception message is that you're supplying a view id to the ArrayAdapter
constructor, whereas it's expecting a layout id. You can tell from the getLayout(...)
call that is part of the stacktrace, but it could've easily been avoided by properly reading the documentation for the invoked constructor:
public ArrayAdapter (Context context, int resource, T[] objects)
Parameters
context
The current context.
resource
The resource ID for a layout file containing a TextView to use when instantiating views.
objects
The objects to represent in the ListView.
Upvotes: 3