Android问题:嵌套线性布局/ R.Java问题?

时间:2011-09-04 08:50:23

标签: android

我在另一个论坛上看到别人有这个问题,他说他已经解决了,但是他没有发布解决方案。我的R.Java似乎没有使用嵌套的LinearLayouts中的id进行更新。 textViews中的前两个id确实出现在R.Java(textView1和textView2)中,但是ImageButtons的后续id都没有...而且我怀疑它是因为布局(但是作为noobie我不知道为什么)。

我所拥有的布局几乎是完美的,所以如果我可以避免它,我不想重写它。但我不知道如何让R.java包含ID。而且我已经尝试过通常的构建清理,刷新等等。任何帮助都会受到我和我的电脑的极大赞赏......因为如果我不能很快解决这个问题,我可能会把它扔出窗外沮丧。 :)

<?xml version="1.0" encoding="utf-8"?>

<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>

<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="86dp" android:background="@drawable/backgdtest" android:text="   Title of App" android:textColor="#ffffff" android:textSize="30px" android:textStyle="bold"/>
<TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:text="    " android:layout_height="wrap_content"></TextView>
    <TableRow android:layout_width="fill_parent" android:weightSum="3" android:layout_height="wrap_content">
        <LinearLayout android:layout_weight="1" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content">
            <ImageButton android:id="@+id/news" android:src="@drawable/news" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageButton>
            <TextView android:layout_width="wrap_content" android:text="  Read News" android:layout_height="wrap_content"></TextView>
        </LinearLayout>
        <LinearLayout android:layout_weight="1" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content">
            <ImageButton android:id="@+id/messages" android:src="@drawable/message" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageButton>
            <TextView android:layout_width="wrap_content" android:text="    Messages" android:layout_height="wrap_content"></TextView>
        </LinearLayout>
        <LinearLayout android:layout_weight="1" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content">
            <ImageButton android:id="@+id/phonebook" android:src="@drawable/phonebook" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageButton>
            <TextView android:layout_width="wrap_content" android:text="  Phone Book" android:layout_height="wrap_content"></TextView>
        </LinearLayout>
    </TableRow>
    <TableRow android:layout_width="fill_parent" android:weightSum="3" android:layout_height="wrap_content">
        <LinearLayout android:layout_weight="1" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content">
            <ImageButton android:id="@+id/planner" android:src="@drawable/planner" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageButton>
            <TextView android:layout_width="wrap_content" android:text="  Day Planner" android:layout_height="wrap_content"></TextView>
        </LinearLayout>
        <LinearLayout android:layout_weight="1" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content">
            <ImageButton android:id="@+id/help" android:src="@drawable/panic" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageButton>
            <TextView android:layout_width="wrap_content" android:text=" Call For Help" android:layout_height="wrap_content"></TextView>
        </LinearLayout>
        <LinearLayout android:layout_weight="1" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content">
            <ImageButton android:id="@+id/exit" android:src="@drawable/exit" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageButton>
            <TextView android:layout_width="wrap_content" android:text=" Exit Program" android:layout_height="wrap_content"></TextView>
        </LinearLayout>
    </TableRow>

3 个答案:

答案 0 :(得分:2)

嵌套布局和ID生成没有问题(一般情况下)。但是,您缺少最外层TableLayout的结束标记。在布局的末尾添加</TableLayout>。如果布局文件中存在错误,Android将不会重新生成R文件 - 这就是您没有看到新ID的原因。

如果您在Eclipse中使用XML编辑器,您会注意到一个红色的“x”图标和错误消息:'XML文档结构必须在同一实体内开始和结束。如果您转到“问题”视图(Window -> Show View -> Problems),您也可以看到此错误。

答案 1 :(得分:1)

这最终成为Eclipse的一个问题。我关闭了程序并在今天早上重新启动它,所有内容都在R.java中重新更新。我没有做任何其他改变。但请注意,正如另一个回答者指出的那样,我粘贴的XML末尾缺少一个标记。它存在于我的实际XML文件中,但是当我将其粘贴到论坛上时就进行了MIA。

谢谢!

答案 2 :(得分:0)

一般的经验法则是设置“自动构建”选项,以便在开始使用之前,在R.java文件中更新xml文件中的所有id。

此外,如果您的xml文件中有任何错误,则R.java不会更新。但是,SDK有时并不会告诉您错误的确切位置。相反,它只是不更新​​R.java。

查看R.java file not updating with UI element's id以了解解决问题的更多选项。