这是我的项目限制:
-com.android.test
--com.android.test.activity
---MainActivity.java
---SplashActivity.java
--com.android.test.ui
---ActivityBase.java
我在com.android.test.activity包中创建了所有活动,并且从com.android.test.ui包中的Base活动扩展了所有活动,
但是我不知道,当我在com.android.test.activity上创建活动时,我的Eclips中出现.R错误,但是当我在com.android.test程序包上创建活动时,无需导入.R类。
我是初学者,请帮忙
当您构建一个android项目时,构建工具会生成一个名为的类R.java
。因为R
是一个类,所以它将像其他所有类一样存在于包中。默认情况下,R
将在您指定为项目包的包中生成。对于您来说,应该是com.android.test
。
因此,即使R在gen /中,而不是src /中,您的包结构实际上也是如此。
-com.android.test
--R.java
--com.android.test.activity
---MainActivity.java
---SplashActivity.java
--com.android.test.ui
---ActivityBase.java
在Java中,import
如果没有在当前类的包内声明一个类,则需要声明。因此,由于com.android.test
未包含在中com.android.test.activity
,因此您需要添加import com.android.test.R;
到MainActivity和SplashActivity中,以便R
在它们中使用。
如果R
不是为您生成的,请查看Eclipse中的Android开发:R.java not regenerating。我可能会建议学习使用IntelliJ IDEA,因为与eclipse相比,我遇到的奇怪的构建问题更少,但这是完全可选的。
另一个可能的错误来源是如果您不小心导入android.R
,这是引用Android SDK资源的位置。这很容易使您感到混乱,因为您可以像这样编写代码R.string.foo
并认为您正在使用com.android.test.R.string.foo
,但实际上,您正在使用android.R.string.foo
,这可能不存在。找到问题的一种简单方法是在您的代码中明确声明,例如:
// you were originally getting an error here
MyActivity.this.getString(R.string.foo);
// try this to get a more obvious error, or see if it fixes it
MyActivity.this.getString(com.android.test.R.string.foo);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句