java - 安卓 : Activity error in other package

标签 java android

这是我的项目限制:

-com.android.test
--com.android.test.activity
---MainActivity.java
---SplashActivity.java  
--com.android.test.ui
---ActivityBase.java

我在 com.android.test.activity 包中创建了所有 Activity ,并且从 com.android.test.ui 包中的 Base Activity 扩展了所有 Activity
但我不知道,当我在 com.android.test.activity 上创建 Activity 时,我在 Eclips 中看到 .R 错误,但是当我在 com.android.test 包上创建 Activity 时,不需要用于导入 .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,请查看 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);

关于java - 安卓 : Activity error in other package,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25264721/

相关文章:

java - Android 中的快速无损图像压缩?

android - SQLITE 批量插入以通过 UPDATE 和 INSERT 增加优化

java - Android - 无法从最终的 GestureDetectorCompat 继承

java - 空指针异常变量

java - 接口(interface)返回类型

java - 从命令到 Android

java - 将更改应用于 BufferedImage

java - 如何使用 httpClient 4 获取上传进度?

java - collections.filter 会错吗?

java - 如何在android中获取准确的UTC时间戳