我的应用程序分为子包,仅供个人组织使用:
com.myname.myapp
|
`- com.myname.myapp.activities
|
`- com.myname.myapp.whatever
|
`- ...
问题是生成的R.java位于com.myname.myapp
,因此当我在子包R.id.something
的类中键入com.myname.myapp.activities
时,我得到R cannot be resolved to a variable
(我猜是明显的。)
当我点击整理导入(Ctrl + Shift + O)时,Eclipse修复了它在顶部添加import com.myname.myapp.R
,一切似乎都完美无缺。但另一方面,Android documentation说明了这一点:
Eclipse有时会喜欢在使用资源的文件顶部添加导入android.R语句,尤其是当您要求eclipse对排序或以其他方式管理导入时。这会导致你的品牌破产。留意这些错误的import语句并删除它们
知道一切正常,我该怎么办?
答案 0 :(得分:24)
您可以随意导入R.file。
import com.myname.myapp.R;
或者使用像这样的变量
com.myname.myapp.R.id.test
答案 1 :(得分:18)
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文件。
希望你理解这个问题。
答案 2 :(得分:1)
事实上警告已经存在,R类有两个版本。有一个通用版本作为android包(android.R)的一部分,并且有一个项目特定的代表您的本地资源文件(com.myname.myapp.R)。 只要看看它们就像java标准库中的两个版本的Date类一样。(java.util.Date&amp; java.sql.Date)两个类,具有相同的名称,由包指定。