对XML文件的引用不是R文件的成员

时间:2010-05-23 11:29:42

标签: android android-manifest

如何在R另一​​个XML文件中进行类布局?

它应该是自动的,因为我有新的资源来res,但事实并非如此。 有人知道我做错了吗?

我打开一个活动,现在我想打开另一个可以使用另一个XML的活动 例。 我有菜单和main.xml。 现在我想使用这种方法去另一个名为gamescreen的活动:

newGameButton.setOnClickListener(new OnClickListener() {

            public void onClick(View view) {
                Intent i = = new Intent(this, gameScreen.class);
                startActivity(i);
            }

}

我想转移到另一个名为gameScreen的活动的“页面”,该活动应该与名为gameScreen.xml的XML相关联。

但是在onCreate:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gameScreen);

}

并且gameScreen不是R文件的成员。

主要问题是当我向布局添加资源时,例如newxmlfile.xml R文件没有做任何工作并保持这种状态。

public static final class layout {
    public static final int main=0x7f030000;
}where it should have been:
public static final class layout {
    public static final int main=0x7f030000;
    public static final int newxmlfile=0x7f031000;
}

5 个答案:

答案 0 :(得分:0)

如果您的文件确实存在于res/layout文件夹中,并且您可能位于其他软件包中,则必须将引用导入R,并删除对android.R <的任何引用/ p>

import com.mypkg.R;

另外,不要忘记将类gameScreen作为活动添加到清单文件中。

修改

您应该使用向导重新创建XML文件,并确保一切正常。与位于SDK的安装/samples/目录中的一些示例进行比较。

答案 1 :(得分:0)

您必须将新活动添加到AndroidManifest.xml:

...
<activity 
    android:name=".gameScreen">
</activity>

修改
这是假设gameScreen是新活动的类名。 另外,根据我的理解,gameScreen是一个位于res / layout中的XML文件 gameScreen.xml的文件名必须为小写:gamescreen.xml

答案 2 :(得分:0)

使用aapt(exe存在于platforms /&lt; platform&gt; / tools / aapt)命令中生成R文件:

aapt package -f -M $ {manifest.file} -F $ {packaged.resource.file} -I $ {path.to.android-jar.library} -S $ {android-resource-directory} [ -m -J $ {folder.to.output.the.R.java}]

它将生成一个新的R.java文件。如果有任何错误,那么它也会显示出来。

答案 3 :(得分:0)

在Eclipse中:menu-project-clean-选择你的项目。

如果没有,请检查gameScreen.xml是否在res布局文件夹下。

答案 4 :(得分:0)

我找到了答案。 以某种方式Eclipse做了

 import Android.R;

导致R变量模糊不清。