获得ClassCastException异常试图dyanmically插入RelativeLayout的时候? [英] Getting ClassCastException when trying to insert RelativeLayout dyanmically?

查看:115
本文介绍了获得ClassCastException异常试图dyanmically插入RelativeLayout的时候?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 的setContentView(R.layout.main2);

        OUT =新的ArrayList< TextView的>();
        llay =(RelativeLayout的)findViewById(R.id.displayPoll);

       RelativeLayout.LayoutParams lparams =新RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
       RelativeLayout.LayoutParams lparams1 =新RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
        的LayoutParams LPAR =新的LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
        Log.v(我的,rched);


        out.add(新的TextView(本));
        out.get(0).setLayoutParams(LPAR);
        out.get(0).setId(1);
        lparams1.addRule(RelativeLayout.ALIGN_BOTTOM,R.id.user_name);
        llay.setLayoutParams(lparams1);
        out.get(0).setText(标题+ 0 +\ñ\ñ\ñ\ñ\ñ\ N);
        my_poll.this.llay.addView(out.get(0));

            的for(int i = 1;我3;;我++)// mJsonArray.length();我++)
            {
                out.add(新的TextView(本));

                out.get(我).setLayoutParams(LPAR);
                out.get(ⅰ).setId第(i + 1);
                Log.v(我的,哎+ out.get(I-1).getId());

                lparams.addRule(RelativeLayout.BELOW,out.get第(i-1).getId());
                llay.setLayoutParams(lparams);

                out.get(我).setText(标题+ I +\ñ\ñ\ñ\ñ\ñ\ N);

                llay.addView(out.get(ⅰ));

            }

                Log.v(我的,rasasched);
 

通过执行程序我收到此错误

  04-06 20:30:49.372:E / AndroidRuntime(1093):致命异常:主要
04-06 20:30:49.372:E / AndroidRuntime(1093):java.lang.ClassCastException:android.widget.RelativeLayout $的LayoutParams
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.widget.ScrollView.onMeasure(ScrollView.java:301)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.view.View.measure(View.java:8171)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.view.View.measure(View.java:8171)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.widget.LinearLayout.measureVertical(LinearLayout.java:526)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.view.View.measure(View.java:8171)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.view.View.measure(View.java:8171)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.view.ViewRoot.performTraversals(ViewRoot.java:801)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.os.Handler.dispatchMessage(Handler.java:99)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.os.Looper.loop(Looper.java:123)
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.app.ActivityThread.main(ActivityThread.java:4627)
04-06 20:30:49.372:E / AndroidRuntime(1093):在java.lang.reflect.Method.invokeNative(本机方法)
04-06 20:30:49.372:E / AndroidRuntime(1093):在java.lang.reflect.Method.invoke(Method.java:521)
04-06 20:30:49.372:E / AndroidRuntime(1093):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
04-06 20:30:49.372:E / AndroidRuntime(1093):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-06 20:30:49.372:E / AndroidRuntime(1093):在dalvik.system.NativeStart.main(本机方法)
 

这是I M使用XML文件..                  

 < RelativeLayout的
机器人:ID =@ + ID / displayPoll
机器人:layout_width =FILL_PARENT
机器人:layout_height =FILL_PARENT
机器人:背景=@可绘制/ back_blue_grad
机器人:填充=0dp>


   <的TextView
    机器人:ID =@ + ID /用户名
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_alignParentTop =真
    机器人:layout_centerHorizo​​ntal =真
    机器人:文本=Priyank Bharad
    机器人:文字颜色=#FFF
    机器人:TEXTSIZE =28dp
    机器人:TEXTSTYLE =黑体/>
   < ImageView的
    机器人:ID =@ + ID / p_image
    机器人:layout_width =35dp
    机器人:layout_height =35dp
    机器人:layout_marginRight =10dp
    机器人:SRC =@可绘制/ final_fb
    机器人:layout_toLeftOf =@用户名/用户名/>
< / RelativeLayout的>

< /滚动型>
 

解决方案

这里的错误是在子类的LayoutParams 的选择。

正确的版本的LayoutParams 的实例取决于你正在创建的视图的不是类型查看本身

看看在logcat的转储:

  04-06 20:30:49.372:E / AndroidRuntime(1093):java.lang.ClassCastException:android.widget.RelativeLayout $的LayoutParams
04-06 20:30:49.372:E / AndroidRuntime(1093):在android.widget.ScrollView.onMeasure(ScrollView.java:301)
 

Android正在试图强制转换的 RelativeLayout.LayoutParams 来,我相信应该是 ScrollView.LayoutParams 实例,因为你的 RelativeLayout的是在滚动型

该修补程序应该是改变你使用的 RelativeLayout的 ScrollView.LayoutParams 。

        setContentView(R.layout.main2);

        out= new ArrayList<TextView>();
        llay =(RelativeLayout) findViewById(R.id.displayPoll);

       RelativeLayout.LayoutParams lparams =  new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
       RelativeLayout.LayoutParams lparams1 =  new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
        LayoutParams lpar = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        Log.v("my","rched");


        out.add(new TextView(this));
        out.get(0).setLayoutParams(lpar);
        out.get(0).setId(1);
        lparams1.addRule(RelativeLayout.ALIGN_BOTTOM,R.id.user_name);
        llay.setLayoutParams(lparams1);
        out.get(0).setText("Title "+0+"\n\n\n\n\n\n");
        my_poll.this.llay.addView(out.get(0));

            for (int i = 1; i < 3;i++)//mJsonArray.length(); i++) 
            {
                out.add(new TextView(this));

                out.get(i).setLayoutParams(lpar);
                out.get(i).setId(i+1);
                Log.v("my","hey : "+out.get(i-1).getId());

                lparams.addRule(RelativeLayout.BELOW,out.get(i-1).getId());
                llay.setLayoutParams(lparams);

                out.get(i).setText("Title "+i+"\n\n\n\n\n\n");

                llay.addView(out.get(i));

            }

                Log.v("my","rasasched");

By executing the program I am getting this error

04-06 20:30:49.372: E/AndroidRuntime(1093): FATAL EXCEPTION: main
04-06 20:30:49.372: E/AndroidRuntime(1093): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.widget.ScrollView.onMeasure(ScrollView.java:301)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.view.View.measure(View.java:8171)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.view.View.measure(View.java:8171)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:526)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.view.View.measure(View.java:8171)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.view.View.measure(View.java:8171)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.os.Looper.loop(Looper.java:123)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.app.ActivityThread.main(ActivityThread.java:4627)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at java.lang.reflect.Method.invokeNative(Native Method)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at java.lang.reflect.Method.invoke(Method.java:521)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-06 20:30:49.372: E/AndroidRuntime(1093):     at dalvik.system.NativeStart.main(Native Method)

This is the XML file i m using..

<RelativeLayout
android:id="@+id/displayPoll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/back_blue_grad"
android:padding="0dp" >


   <TextView
    android:id="@+id/user_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:text="Priyank Bharad"
    android:textColor="#fff"
    android:textSize="28dp"
    android:textStyle="bold" />
   <ImageView
    android:id="@+id/p_image"
    android:layout_width="35dp"
    android:layout_height="35dp"
    android:layout_marginRight="10dp"
    android:src="@drawable/final_fb" 
    android:layout_toLeftOf="@id/user_name"/>
</RelativeLayout>

</ScrollView>

解决方案

The mistake here is in the choice of the subclass of LayoutParams.

The correct version of LayoutParams to instantiate depends on the parent of the view you're creating, not the type of the view itself.

Take a look at the logcat dump:

04-06 20:30:49.372: E/AndroidRuntime(1093): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams
04-06 20:30:49.372: E/AndroidRuntime(1093):     at android.widget.ScrollView.onMeasure(ScrollView.java:301)

Android is trying to typecast the instance of RelativeLayout.LayoutParams to, what I believe should be ScrollView.LayoutParams, because your RelativeLayout is inside of a ScrollView.

The fix should be to change the layout params type that you're using on the RelativeLayout to ScrollView.LayoutParams.

这篇关于获得ClassCastException异常试图dyanmically插入RelativeLayout的时候?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆