简体   繁体   中英

Caused by: java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView

I am writing a program in which i am using Spinner, earlier i used same kind of spinner in my project, but did not get any problem, don't know why its happening with me !

I am getting:

java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView

Log:

02-24 01:01:13.793: E/AndroidRuntime(1561): FATAL EXCEPTION: main
02-24 01:01:13.793: E/AndroidRuntime(1561): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.widget.AbsListView.obtainView(AbsListView.java:2177)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.widget.ListView.measureHeightOfChildren(ListView.java:1247)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.widget.ListView.onMeasure(ListView.java:1159)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.View.measure(View.java:15848)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:477)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.View.measure(View.java:15848)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.View.measure(View.java:15848)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1451)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.View.measure(View.java:15848)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.View.measure(View.java:15848)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:302)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.View.measure(View.java:15848)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.View.measure(View.java:15848)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.Choreographer.doCallbacks(Choreographer.java:562)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.Choreographer.doFrame(Choreographer.java:532)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.os.Handler.handleCallback(Handler.java:730)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.os.Handler.dispatchMessage(Handler.java:92)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.os.Looper.loop(Looper.java:137)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.app.ActivityThread.main(ActivityThread.java:5103)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at java.lang.reflect.Method.invokeNative(Native Method)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at java.lang.reflect.Method.invoke(Method.java:525)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-24 01:01:13.793: E/AndroidRuntime(1561):     at dalvik.system.NativeStart.main(Native Method)
02-24 01:01:13.793: E/AndroidRuntime(1561): Caused by: java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView
02-24 01:01:13.793: E/AndroidRuntime(1561):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:379)
02-24 01:01:13.793: E/AndroidRuntime(1561):     ... 41 more
02-24 01:01:17.584: I/Process(1561): Sending signal. PID: 1561 SIG: 9

xml:

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/header"
        android:layout_marginTop="21dp"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="50dp"
            android:paddingTop="2dp"
            android:textStyle="bold"
            android:textSize="20sp"
            android:text="@string/food_pet_name" />

        <EditText 
            android:id="@+id/editPetName"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:hint="Pet Name"
            />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/linearLayout1"
        android:layout_marginTop="10dp"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="50dp"
            android:paddingTop="2dp"
            android:textStyle="bold"
            android:textSize="20sp"
            android:text="@string/food_desired_product" />

         <Spinner 
             android:id="@+id/spinnerProduct"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginLeft="20dp"
             android:layout_marginRight="20dp"/>
    </LinearLayout>

few lines:

// Creating adapter for spinner
            ArrayAdapter<String> dataAdapter = new ArrayAdapter<String> (getActivity(), android.R.layout.simple_spinner_item, categories);

            // Drop down layout style - list view with radio button
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

while using Graphical Layout getting:

Missing styles. Is the correct theme chosen for this layout ?

Failed to find style 'textViewStyle' in current theme

Failed to find style 'editTextStyle' in current theme

Failed to find style 'spinnerStyle' in current theme

Failed to find style 'buttonStyle' in current theme

android.content.res.Resources$NotFoundException "?adnroid:attr/listPrefferedItemHeight" in attribute "minHeight" is not a valid format.

Note:- In this project i am using spinners in two xmls, and in both getting same issues.

Use

public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)

to specify TextView id. Now adapter thinks that roow view of simple_spinner_item layout is TextView. But it's not.

The constructor you are using for your ArrayAdapter is,

public ArrayAdapter (Context context, int resource, T[] objects) Added in API level 1

Constructor

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.

where the int resource is the ID of the layout containing the TextView which is your RelativeLayout. However the one you have passed is android.R.layout.simple_spinner_item .

So try changing it to,

 ArrayAdapter<String> dataAdapter = new ArrayAdapter<String> (getActivity(), your raletive layout ID, R.id.textView1 ,categories);

And, if you are giving your own implementation to ArrayAdapter you can also use @Shayan's answer.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM