元素被赋予错误的id

时间:2014-07-08 22:12:32

标签: android xml relativelayout

在暂停的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>

2 个答案:

答案 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)

要解决两件事:

  1. 在引用layout_x约束中的元素时,请移除+

  2. 请确保您没有意外导入android.R