在暂停的xml中,我将LinearLayout设置为@+id/camera
但是当我调用(LinearLayout) findViewById(R.id.camera)
时,我得到ClassCastException: Button can not be cast to Linearlayout
。换句话说,id是一些如何应用于其中一个按钮。如果我删除第二个android:layout_above="@+id/camera"
,那么它可以正常工作。这是怎么回事?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/camera"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true" />
<View
android:id="@+id/center"
android:layout_height="match_parent"
android:layout_width="0dp"
android:visibility="invisible"
android:layout_centerHorizontal="true" />
<Button
android:id="@+id/front"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="front"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/center"
android:layout_above="@+id/camera" />
<Button
android:id="@+id/back"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="back"
android:layout_alignParentRight="true"
android:layout_toRightOf="@+id/center"
android:layout_above="@+id/camera" />
<Button
android:id="@+id/export"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="export"
android:layout_alignParentBottom="true"
android:layout_below="@+id/camera" />
</RelativeLayout>
答案 0 :(得分:2)
<Button
android:id="@+id/front"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="front"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/center"
android:layout_above="@+id/camera" />
第二次引用时,不应使用+
。 android:id="@+id/my_id"
表示“我将此ID添加到ID列表中,我想将其用作此元素的ID。”
android:id="@id/my_id"
表示“我想使用现有的id作为此元素的id。”
答案 1 :(得分:0)
要解决两件事:
在引用layout_x
约束中的元素时,请移除+
。
请确保您没有意外导入android.R
。