Android:致命异常:java.lang.ClassCastException LayoutParams

时间:2015-08-31 14:39:56

标签: java android exception classcastexception

嘿伙计我试图在我的应用程序内部显示自定义消息,但是在将填充设置为programaticaly时,我一直收到此错误:

Fatal Exception:java.lang.ClassCastExceptionandroid.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.FrameLayout$LayoutParams

以下是我尝试设置填充的方法:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    if(alignTop){
        params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
        int actionBarHeight = 0;
        TypedValue tv = new TypedValue();
        if (getContext().getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
        {
            actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getContext().getResources().getDisplayMetrics());
        }
        params.setMargins(0, actionBarHeight, 0,0);
    }else{
        params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    }
    params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
    params.addRule(RelativeLayout.ALIGN_PARENT_START);
    MessageView.this.setLayoutParams(params);

这是我的XML文件:

 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:roboto="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="#1e1e1e"
  android:id="@+id/messageViewBackground"
  android:layout_alignParentLeft="true"
  android:layout_alignParentStart="true"
  android:padding="10dp">

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:id="@+id/messageViewSpinnerLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp">


        <ImageView
            android:id="@+id/messageViewSpinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/icon_spinner_small"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/icon_spinner_logo_small"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true"/>

    </RelativeLayout>

    <ImageView
        android:id="@+id/messageViewIcon"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:src="@android:drawable/stat_sys_warning"
        android:visibility="gone"/>

    <com.myapp.widgets.RobotoText
        android:id="@+id/messageViewText"
        roboto:font="Light"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#5B5B5B"
        android:layout_gravity="center_vertical" />

</LinearLayout>
</RelativeLayout>

我做错了什么?

1 个答案:

答案 0 :(得分:0)

只是一个猜测,但是如果MessageView扩展了FrameLayout,这就是为什么会发生异常,并且你不需要将params添加到MessageView.this,而是添加到RelativeLayout视图,其中一个来自你的布局中带有id { {1}}或android:id="@+id/messageViewBackground"