意外转换为textview;布局标签是相对布局

时间:2016-02-13 03:12:21

标签: android casting

我是Android编程的新手,我有一个我无法弄清楚的基本问题。我正在尝试使用一系列相对布局制作一个Sudoku应用程序。但是当我尝试更改我的应用程序中的一个TextView中的文本时,我收到此错误:

  

意外转换为textview;布局标签是相对布局

非常感谢任何帮助!

这是产生错误的java代码:

private void message (){
    TextView targetTextView = (TextView) findViewById(R.id.TL_Top_Left_Box);
    targetTextView.setText("1");
}

这是基础XML(因为完整代码非常重复,因此非常简略):

<RelativeLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="20dp"
    android:layout_gravity="center_horizontal"
    tools:context="com.example.android.sudoku.MainActivity">

<RelativeLayout
    android:id="@+id/Sudoku_Grid"
    android:layout_width="240dp"
    android:layout_height="240dp"
    android:background="@android:color/black"
    android:layout_centerHorizontal="true">

    <RelativeLayout
        android:id="@+id/Top_Left_Grid"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:background="@android:color/black"
        android:layout_toLeftOf="@id/Top_Center_Grid">

        <RelativeLayout
            android:id="@+id/TL_Top_Center_Box"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_centerHorizontal="true"
            android:orientation="horizontal">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:textColor="@android:color/black"
                android:background="@android:color/white"
                android:layout_marginTop="1dp"
                android:layout_marginRight="1dp"
                android:layout_marginBottom="1dp"
                android:layout_marginLeft="1dp"
                android:textSize="17sp"
                android:gravity="center"
                android:text="0"/>

        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/TL_Top_Left_Box"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_toLeftOf="@id/TL_Top_Center_Box"
            android:orientation="horizontal">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:textColor="@android:color/black"
                android:background="@android:color/white"
                android:layout_marginTop="1dp"
                android:layout_marginRight="1dp"
                android:layout_marginBottom="1dp"
                android:textSize="17sp"
                android:gravity="center"
                android:text="0"/>

        </RelativeLayout>

    </RelativeLayout>

</RelativeLayout>

<Button
    android:id="@+id/Up_Button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/Sudoku_Grid"
    android:layout_marginTop="25dp"
    android:layout_centerHorizontal="true"
    android:textSize="20sp"
    android:onClick="Click_1"
    android:text="Up"/>

</RelativeLayout>

3 个答案:

答案 0 :(得分:1)

这是定义id TL_Top_Left_Box的地方:

<RelativeLayout
    android:id="@+id/TL_Top_Left_Box"
    android:layout_width="25dp"
    android:layout_height="25dp"
    android:layout_toLeftOf="@id/TL_Top_Center_Box"
    android:orientation="horizontal">

您可能希望删除该ID行,并将其添加到TextView所包含的RelativeLayout中:

<TextView
    android:id="@+id/TL_Top_Left_Box"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textColor="@android:color/black"
    android:background="@android:color/white"
    android:layout_marginTop="1dp"
    android:layout_marginRight="1dp"
    android:layout_marginBottom="1dp"
    android:layout_marginLeft="1dp"
    android:textSize="17sp"
    android:gravity="center"
    android:text="0"/>

答案 1 :(得分:0)

您正在请求具有id TL_Top_Left_Box的视图并将其强制转换为TextView。在布局中,具有该id的视图是RelativeLayout。您不能将RelativeLayout强制转换为TextView。

如果您希望获得TextView,请务必请求正确的ID。但是如果你期待一个RelativeLayout,那么用该类型创建一个变量,然后使用该类型进行转换。

答案 2 :(得分:0)

<**RelativeLayout**
            android:id="@+id/TL_Top_Center_Box"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_centerHorizontal="true"
            android:orientation="horizontal">

RelativeLayout不是 TextView