I am trying to initialize (or populate, if you prefer) two spinners on the same layout. I'm imitating code that I've seen in other examples and the initialization works okay in the debugger but sometime after the initialization - and before the layout with the spinners appears on my Android device (my phone) - the app crashes with a stacktrace that does NOT identify any line of code in my app. I'm trying to figure out where in my app the trouble lies. Here are the relevant lines from Logcat. I'm running Android Studio 3.1.3.
07-19 21:31:14.821 30262-30262/com.example.android.twlistsales E/ArrayAdapter: You must supply a resource ID for a TextView 07-19 21:31:14.822 30262-30262/com.example.android.twlistsales D/AndroidRuntime: Shutting down VM 07-19 21:31:14.838 30262-30262/com.example.android.twlistsales E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.android.twlistsales, PID: 30262 java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:401) at android.widget.ArrayAdapter.getView(ArrayAdapter.java:371) at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:195) at android.widget.Spinner.onMeasure(Spinner.java:662) at android.support.v7.widget.AppCompatSpinner.onMeasure(AppCompatSpinner.java:420) at android.view.View.measure(View.java:21125) at android.support.constraint.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:1212) at android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:1552) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:141) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:896) at android.view.View.measure(View.java:21125) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2612) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1664) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1915) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1537) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:959) at android.view.Choreographer.doCallbacks(Choreographer.java:734) at android.view.Choreographer.doFrame(Choreographer.java:670) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:945) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) Caused by: java.lang.ClassCastException: android.support.constraint.ConstraintLayout cannot be cast to android.widget.TextView at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:388) at android.widget.ArrayAdapter.getView(ArrayAdapter.java:371) at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:195) at android.widget.Spinner.onMeasure(Spinner.java:662) at android.support.v7.widget.AppCompatSpinner.onMeasure(AppCompatSpinner.java:420) at android.view.View.measure(View.java:21125) at android.support.constraint.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:1212) at android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:1552) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:141) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:896) at android.view.View.measure(View.java:21125) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2612) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1664) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1915) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1537) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:959) at android.view.Choreographer.doCallbacks(Choreographer.java:734) at android.view.Choreographer.doFrame(Choreographer.java:670) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:945) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) Caused by: java.lang.ClassCastException: android.support.constraint.ConstraintLayout cannot be cast to android.widget.TextView at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:388) at android.widget.ArrayAdapter.getView(ArrayAdapter.java:371) at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:195) at android.widget.Spinner.onMeasure(Spinner.java:662) at android.support.v7.widget.AppCompatSpinner.onMeasure(AppCompatSpinner.java:420) at android.view.View.measure(View.java:21125) at android.support.constraint.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:1212) at android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:1552) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:141) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:21125) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6461) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:896) at android.view.View.measure(View.java:21125) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2612) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1664) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1915) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1537) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:959) at android.view.Choreographer.doCallbacks(Choreographer.java:734) at android.view.Choreographer.doFrame(Choreographer.java:670) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:945) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
[For some reason, it won't let me paste the last bit of the stacktrace here so I'm typing it:] Caused by: java.lang.ClassCastException: android.support.ConstraintLayout cannot be cast to android.widget.TextView at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:388) <42 more...> <1 internal call> <2 more...>
I'm guessing that if I could actually see the lines implied in the last bit of the stacktrace, it would enlighten me as to where I've made a mistake in my code but all it's given me is the Java code, which is not very helpful.
I'm inclined to think my spinner initialization code has caused some kind of issue within Java but all I'm seeing is that aspect of the problem and not getting any idea of where the problem is in MY code. How do I figure this out?
For what it's worth, here is my initialization code for both spinners:
//Set up spinner for Client Code
spClientCode = findViewById(R.id.client_spinner);
//Create an array of client codes from the Client enum
ArrayList<String> clientCodes = new ArrayList<>();
for (Client client: Client.values()) {
clientCodes.add(client.toString());
}
ArrayAdapter<String> clientAdapter = new ArrayAdapter(this, R.layout.activity_add_sale, clientCodes);
clientAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spClientCode.setAdapter(clientAdapter);
//Set up spinner for Seller
spSellerName = findViewById(R.id.seller_spinner);
//Create an array of seller names from the Seller enum
ArrayList<String> sellers = new ArrayList<>();
for (Seller seller: Seller.values()) {
sellers.add(seller.toString());
}
ArrayAdapter<String> sellerAdapter = new ArrayAdapter(this, R.layout.activity_add_sale, sellers);
sellerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spSellerName.setAdapter(sellerAdapter);