我是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>
答案 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