TL;DR,如果您收到错误“包 R 不存在”,可能的原因是
- XML 资源文件中的一些错误
-> 修复 XML 错误
- 当前包与包不同
R
(参见package
AndroidManifest.xml 中的属性)
-> 导入R
类,例如import com.example.android.R;
-> 或在源中使用适当的包,例如package com.example.android;
-> 或将 AndroidManifest.xml 中的包属性更改为
<manifest xmlns:android="..." package="com.example.android" ...>
,如果合适的话
- 使用的
R
id 来自系统资源
-> 不导入
,android.R
但在有问题的android.
id前加上.android.R.layout.simple_list_item_2
android.R
R
com.example.android.R.id.main_menu
该类是从应用程序的资源中自动生成的R
。它包含这些资源的s,并包含在
相应文件id
的标记中命名的包中
。<manifest>
AndroidManifest.xml
如果资源 XML 文件中没有错误,R.java
则会在下面的包子目录中生成源gen/
并编译。
包中还有另一个R
类android
。该类android.R
包含一些嵌套类,这些嵌套类又包含系统资源id
的 s 和其他值。
要在 Java 中使用类,您必须使用整个包命名该类,例如
java.util.List<Object> list = new java.util.ArrayList<Object>();
或导入该类,然后在没有包的情况下使用它
import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();
如果当前类和使用的类都在同一个包中,您也可以使用一个类而不命名包,例如
package com.example.android;
public class A {
/* ... */
}
package com.example.android;
public class B {
public void useA() {
A a = new A();
}
}