我已经创建了这个非常简单的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);
}
}
感谢您的帮助!
答案 0 :(得分: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的右边
答案 1 :(得分:2)
当您的xml文件包含错误时,将不会生成R类。你的错误是这样的:
android:layout_above="@id/alpha"
放:
android:layout_above="@+id/alpha"
答案 2 :(得分:1)
在第10行尝试此操作
android:layout_above="@+id/alpha"
这在11
android:layout_toLeftOf="@+id/mode"
答案 3 :(得分:1)
您遇到错误的原因是您正在引用尚未由文件中的该点定义的ID。您只能相对于文件中元素上方定义的ID进行布局。
没有R.java
文件,因为XML文件中的错误导致构建失败,并且在构建期间生成了文件。