0

你好,今天我试图为 android 做一个相对布局,但我在 R.java 中遇到错误:“Unexpected end of declaration” 8 次我花了一个小时,但我仍然没有找到任何东西

这是代码(我确定它是关于 xml 而不是 java 代码)

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:id="@+id/playScrollView1">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:id="@+id/playRelativeLayout1">

        <TextView
            android:layout_height="wrap_content"
            android:text="Convert to binary"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_width="fill_parent"
            android:id="@+id/TextView1"
            android:layout_alignParentTop="true"/>

        <Button
            android:layout_height="wrap_content"
            android:text="0"
            android:layout_width="wrap_content"
            android:layout_below="@id/TextView1"
            android:id="@+id/1"/>

        <Button
            android:layout_height="wrap_content"
            android:text="0"
            android:layout_width="wrap_content"
            android:id="@+id/2"
            android:layout_below="@id/1"/>

    </RelativeLayout>
</ScrollView>

提前致谢!

4

2 回答 2

3

你需要使用

  <Button
        android:layout_height="wrap_content"
        android:text="0"
        android:layout_width="wrap_content"
        android:layout_below="@+id/TextView1" // missing+
        android:id="@+id/button1"/> // change id to button1 not 1

其他按钮相同

http://developer.android.com/guide/topics/ui/declaring-layout.html

任何 View 对象都可能有一个与之关联的整数 ID,以唯一标识树中的 View。编译应用程序时,此 ID 以整数形式引用,但 ID 通常在布局 XML 文件中以字符串的形式在 id 属性中分配。

例子 :

android:id="@+id/my_button"

字符串开头的符号 (@) 表示 XML 解析器应该解析和扩展 ID 字符串的其余部分,并将其标识为 ID 资源。加号 (+) 表示这是一个新的资源名称,必须创建并添加到我们的资源中(在 R.java 文件中)

对于相对布局

http://developer.android.com/guide/topics/ui/layout/relative.html

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:id="@+id/playScrollView1">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:id="@+id/playRelativeLayout1">

        <TextView
            android:layout_height="wrap_content"
            android:text="Convert to binary"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_width="fill_parent"
            android:id="@+id/TextView1"
            android:layout_alignParentTop="true"/>

        <Button
            android:layout_height="wrap_content"
            android:text="0"
            android:layout_width="wrap_content"
            android:layout_below="@+id/TextView1"
            android:id="@+id/button1"/>

        <Button
            android:layout_height="wrap_content"
            android:text="0"
            android:layout_width="wrap_content"
            android:id="@+id/2"
            android:layout_below="@+id/button1"/>

    </RelativeLayout>
</ScrollView>
于 2013-09-21T15:15:05.177 回答
1

它只是命名约定

只需将 Buttons 的 id 名称更改@+id/1@+id/One

它不能只是数字,它不能以数字开头, 因为它会在 R.java 中生成字段

像下面这样

    public static final int 1=0x7f0a0032;
    public static final int 2=0x7f0a0033;

按照惯例,这是大错特错

所以你的代码应该是这样的

        <Button
            android:id="@+id/One"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/TextView1"
            android:text="0" />

        <Button
            android:id="@+id/Two"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/One"
            android:text="0" />

或完全

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/playScrollView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <RelativeLayout
        android:id="@+id/playRelativeLayout1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:paddingLeft="20dp"
        android:paddingRight="20dp" >

        <TextView
            android:id="@+id/TextView1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:text="Convert to binary"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <Button
            android:id="@+id/One"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/TextView1"
            android:text="0" />

        <Button
            android:id="@+id/Two"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/One"
            android:text="0" />
    </RelativeLayout>

</ScrollView>
于 2013-09-21T15:14:50.140 回答