我要如何获得ClassCastExpection

时间:2019-03-24 18:25:24

标签: java android exception

每当我尝试运行我的代码时,我都会在logcat中不断收到此错误

  

java.lang.ClassCastException:android.widget.TableLayout $ LayoutParams无法转换为android.widget.TableRow $ LayoutParams

我正在尝试获取布局参数,以便可以动态修改它。

这是Java代码

    TableRow k1 = (TableRow)main.getChildAt(main.getChildCount()-1);
    TableRow.LayoutParams k2 = (TableRow.LayoutParams)k1.getLayoutParams();
    Log.e(TAG, "---------Displaying k2- \t" + k2);

main代表已经存在的TableLayout 这是xml文件

        <TableLayout
            android:id="@+id/abit_table"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="32dp">

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="13dp">

                <TextView
                    android:id="@+id/ability"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/ability"
                    android:textStyle="bold" />
            </TableRow>

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="32dp">

                <TextView
                    android:id="@+id/abil"
                    android:layout_width="147dp"
                    android:layout_height="match_parent"
                    android:text="@string/ability"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/mastery"
                    android:layout_width="82dp"
                    android:layout_height="match_parent"
                    android:text="@string/master"
                    android:textStyle="bold" />
            </TableRow>
        </TableLayout>

有人可以向我解释此错误的含义以及如何解决吗? 任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

如异常所示,k1.getLayoutParams()将返回TableLayout.LayoutParams而不是TableRow.LayoutParams

将代码更改为此:

TableRow k1 = (TableRow)main.getChildAt(main.getChildCount()-1);
TableLayout.LayoutParams k2 = (TableLayout.LayoutParams)k1.getLayoutParams();