简体   繁体   English

造成原因:java.lang.ClassCastException:android.widget.RelativeLayout无法转换为android.widget.TextView

[英]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 ! 我正在编写一个使用Spinner的程序,之前我在项目中使用过相同类型的Spinner,但没有遇到任何问题,不知道它为什么会发生在我身上!

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: 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 无法在当前主题中找到样式“ textViewStyle”

Failed to find style 'editTextStyle' in current theme 在当前主题中找不到样式“ editTextStyle”

Failed to find style 'spinnerStyle' in current theme 在当前主题中找不到样式“ spinnerStyle”

Failed to find style 'buttonStyle' in current theme 无法在当前主题中找到样式“ buttonStyle”

android.content.res.Resources$NotFoundException "?adnroid:attr/listPrefferedItemHeight" in attribute "minHeight" is not a valid format. 属性“ minHeight”中的android.content.res.Resources $ NotFoundException“?adnroid:attr / listPrefferedItemHeight”不是有效格式。

Note:- In this project i am using spinners in two xmls, and in both getting same issues. 注意:-在这个项目中,我在两个xml中使用了微调器,并且两个都出现了相同的问题。

Use 采用

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

to specify TextView id. 指定TextView ID。 Now adapter thinks that roow view of simple_spinner_item layout is TextView. 现在,适配器认为simple_spinner_item布局的行视图是TextView。 But it's not. 但事实并非如此。

The constructor you are using for your ArrayAdapter is, 您用于ArrayAdapter的构造函数是,

public ArrayAdapter (Context context, int resource, T[] objects) Added in API level 1 API级别1中添加了公共ArrayAdapter(上下文上下文,int资源,T []对象)

Constructor 建设者

Parameters 参量

context - The current context. context-当前上下文。

resource - The resource ID for a layout file containing a TextView to use when instantiating views. resource-包含要在实例化视图时使用的TextView的布局文件的资源ID。

objects - The objects to represent in the ListView. objects-要在ListView中表示的对象。

where the int resource is the ID of the layout containing the TextView which is your RelativeLayout. 其中int资源是包含TextView的布局的ID,后者是您的RelativeLayout。 However the one you have passed is android.R.layout.simple_spinner_item . 但是,您传递的是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. 而且,如果您将自己的实现提供给ArrayAdapter,则还可以使用@Shayan的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 原因:java.lang.ClassCastException:android.widget.RelativeLayout无法强制转换为com.slidingmenu.lib.SlidingMenu - Caused by: java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to com.slidingmenu.lib.SlidingMenu java.lang.ClassCastException:无法转换android.widget.TextView - java.lang.ClassCastException: android.widget.TextView cannot be cast Android java.lang.ClassCastException:无法将android.widget.RelativeLayout强制转换为android.widget.EditText - Android java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.EditText Java.lang.ClassCastException:无法将android.widget.RelativeLayout强制转换为android.widget.FrameLayout - Java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.FrameLayout java.lang.ClassCastException:android.widget.RelativeLayout $ LayoutParams无法转换为android.widget.LinearLayout $ LayoutParams - java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams java.lang.ClassCastException: android.widget.RelativeLayout 不能转换为 android.widget.Button - java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.Button java.lang.ClassCastException:android.widget.RelativeLayout无法强制转换为android.widget.EditText - java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.EditText java.lang.ClassCastException:android.widget.RelativeLayout无法转换为android.widget.TabHost - java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TabHost java.lang.ClassCastException:android.widget.RelativeLayout $ LayoutParams无法转换为android.widget.FrameLayout $ LayoutParams - java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.FrameLayout$LayoutParams ClassCastException: android.widget.RelativeLayout 不能转换为 android.widget.TextView? - ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM