这是我的项目限制:
-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 类。
我是初学者,请帮忙
答案 0 :(得分:1)
构建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
,请查看Developing for Android in Eclipse: 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);