从不同的包访问R.java

从不同的包访问R.java,java,android,eclipse,sdk,Java,Android,Eclipse,Sdk,我有一个分为子包的应用程序,仅用于个人组织: com.myname.myapp | `- com.myname.myapp.activities | `- com.myname.myapp.whatever | `- ... 问题是,生成的R.java位于com.myname.myapp,因此当我在子包com.myname.myapp.activities中的类中键入R.id.something时,我得到R无法解析为变量(我猜很明显) 当我点击OrganizeImports(

我有一个分为子包的应用程序,仅用于个人组织:

com.myname.myapp
 |
 `-  com.myname.myapp.activities
 |
 `-  com.myname.myapp.whatever
 |
 `-  ...
问题是,生成的R.java位于
com.myname.myapp
,因此当我在子包
com.myname.myapp.activities
中的类中键入
R.id.something
时,我得到
R无法解析为变量
(我猜很明显)

当我点击OrganizeImports(Ctrl+Shift+O)时,Eclipse在顶部添加了
importcom.myname.myapp.R
来修复它,一切似乎都很正常。但另一方面,声明如下:

Eclipse有时喜欢在使用资源的文件顶部添加import android.R语句,特别是当您要求Eclipse排序或以其他方式管理导入时。这将导致您的make崩溃。注意这些错误的导入语句并删除它们


知道一切都很正常,我该怎么办?

您可以随时导入R.file

import com.myname.myapp.R; 
或者像这样在变量处使用

com.myname.myapp.R.id.test

R.java始终在您在清单文件中提到的位置(包)创建

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.myname.myapp"
      android:versionCode="1"
      android:versionName="1.0">

对于任何其他位置或包,必须从根位置导入R.java文件


希望您理解这个问题。

警告与事实相符,R类有两个版本。有一个通用版本作为android软件包(android.R)的一部分提供,还有一个特定于项目的版本代表您的本地资源文件(com.myname.myapp.R)。
只需像查看java标准库中日期类的两个版本一样查看它们。(java.util.Date和java.sql.Date)由包指定的两个名称相同的类。

如果有效,请不要修复它。但是你在做什么呢?我使用的软件包与R文件没有任何问题。@Nallath-Hmm。您使用的是与我相同的设置吗?您可以从子包访问R类而不进行任何类型的导入或完整命名吗?(即com.myname.myapp.R)我阅读此声明是为了从确切的声明
import android.R中发出警告
,它将导入而不是特定于应用的
com.myname.myapp.R
。为
R
类进行导入应该很好。@Joachim Sauer-Hm,这很有意义。然后我想我做的是对的,但只是被医生弄糊涂了。谢谢您通过发布此问题帮助我解决了此问题。现在看起来很明显,但我已经为此浪费了好几个小时。塔克斯!这是最好的答案!