0

我创建了这个非常简单RelativeLayout的测试,作为我以后可能想做的事情的测试。目前,应该只有 3 个按钮,second, ,alpha并且mode彼此相对排列。

我有两个问题:首先,XML 布局文件有问题,我不知道是什么问题,因为我已经彻底检查过了。这会导致布局的第 10 行和第 11 行出现错误。其次,没有R像通常在 android 活动中那样生成的文件。这会导致主代码的第 11 行出现错误,因为它试图从 R 文件中调用某些内容。

我的代码如下:

布局:

<?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"
    android:orientation="vertical" >
    <Button
        android:id="@+id/second"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/alpha"
        android:layout_toLeftOf="@id/mode"
        android:text="@string/second"
        android:layout_alignParentLeft="true" />
    <Button
        android:id="@+id/alpha"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/second"
        android:layout_alignParentLeft="true"
        android:text="@string/alpha" />
    <Button
        android:id="@+id/mode"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/second"
        android:layout_alignParentLeft="true"
        android:text="@string/mode" />
</RelativeLayout>

主要Activity代码:

package com.example.TI84;

import android.app.Activity;
import android.os.Bundle;

public class TI84GraphingCalculatorActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

谢谢您的帮助!

4

4 回答 4

3

顾名思义,RelativeLayouts 以相对方式组织元素。因此,您不能从文件上方的小部件引用文件中较低的小部件。此布局将起作用:

<?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"
    android:orientation="vertical" >

    <Button
        android:id="@+id/mode"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text="@string/alpha" />

    <Button
        android:id="@+id/second"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/mode"
        android:text="@string/second" />

    <Button
        android:id="@+id/alpha"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/mode"
        android:layout_below="@id/mode"
        android:text="@string/alpha" />

</RelativeLayout>

您没有获得 R.java,因为当您的 XML 文件中有错误时不会生成它。

此外,尽管您没有要求这样做,但您的原始 XML 文件具有循环依赖关系。这意味着其中两个小部件以这样一种方式相互引用,从而创建一个无限循环,例如 A 在 B 的左侧,B 在 A 的右侧

于 2012-06-25T21:40:22.990 回答
2

当您的 xml 文件包含错误时,将不会生成 R 类。你的错误是这样的:

android:layout_above="@id/alpha"

放:

android:layout_above="@+id/alpha"
于 2012-06-25T21:29:16.540 回答
1

在第 10 行试试这个

android:layout_above="@+id/alpha"

这在 11

android:layout_toLeftOf="@+id/mode"
于 2012-06-25T21:28:55.453 回答
1

出现错误的原因是因为您引用了文件中该点尚未定义的 id。您只能相对于文件中元素上方定义的 id 对其进行布局。

没有R.java文件是因为 XML 文件中的错误导致构建失败,并且文件是在构建过程中生成的。

于 2012-06-25T21:31:01.023 回答