从不同的包访问R.java

问题描述

| 我有一个分为子包的应用程序,仅用于个人组织:
com.myname.myapp
 |
 `-  com.myname.myapp.activities
 |
 `-  com.myname.myapp.whatever
 |
 `-  ...
问题在于生成的R.java位于
com.myname.myapp
,因此当我在子包
com.myname.myapp.activities
的类中键入
R.id.something
时,我得到
R cannot be resolved to a variable
(我想很明显)。 当我单击“组织导入”(Ctrl + Shift + O)时,Eclipse对其进行了修复,在其顶部添加
import com.myname.myapp.R
,并且一切似乎都正常运行。但另一方面,Android文档指出:   Eclipse有时喜欢在使用资源的文件顶部添加import android.R语句,尤其是当您要求eclipse排序或以其他方式管理导入时。这将导致您的品牌受损。查找这些错误的导入语句并删除它们 知道一切工作正常后,我该怎么办?     

解决方法

        您可以在任何位置导入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标准库中的两个版本的Date类一样看它们。(java.util.Date和java.sql.Date)两个同名的类,由包指定。