2010-10-14 36 views
29

我正在开发的应用程序将许多活动组织为七个Java软件包。最初我把所有的编码和东西写在一个Java包中作为不同的项目。Android:将多个Java软件包包含在清单中

现在我正处在想要将所有软件包放在一起的一个项目中。当我向src文件夹添加新软件包时,出现所有R.id. *值(“R无法解析”)的错误。

我的直觉告诉我,我不得不放在项目清单中有一些奇特的东西,但我找不到任何资源在线告诉我如何。

(注:我已阅读thisthis,我仍然无法弄清楚如何将其他软件包添加到我的项目)

+0

你尝试做一个干净的构建?并且在你添加的类中更新你的R文件的包含路径?如果您之前在不同的项目中进行过活动,则R文件可能位于不同的位置。 – 2010-10-14 16:39:02

+2

我已经去了项目>清洁...半打希望它会工作...没有运气。 – HappyGeisha 2010-10-14 16:47:23

+0

R的包含路径如何?这是对的吗? – 2010-10-14 16:56:39

回答

36

确保在活动的顶部的import语句引用了正确的R文件。每个项目都有自己的R文件,因此如果您将活动从一个项目复制到另一个项目,它仍将尝试引用旧项目中的R文件。

您不需要在清单中明确包含不同的包。包括来自两个不同的包的活动,说:

com.example.package1.Activity1 
com.example.package2.Activity2 

,你可以做到以下几点:

<manifest package="com.example" . . . > 
    <application . . .> 
    <activity android:name=".package1.Activity1" . . . /> 
    <activity android:name=".package2.Activity2" . . . /> 
    </application> 
</manifest> 
+0

哦,梅拉,你一直很乐于助人!再次感谢! – HappyGeisha 2010-10-14 17:33:22

+0

是的代码工作,但Android仍然给红色的错误标记(但将编译和运行) – StarWind0 2016-07-17 02:00:17

14

的Android会自动创建在您的应用程序清单中声明的​​包命名为“R”的类。当你的所有类都在这个包里时,你永远不需要显式地导入“R”。但是,如果在其他包中的类,他们将不会看到它在默认情况下,你将不得不包括

import <app-package>.R; 

import <app-package>.*; 

(代替当然<app-package>实际名称)。

如果你在应用中包含library projects,那么他们可以引用他们自己的“R”类,它们将在家用包中生成。如果你有几个独立的活动需要捆绑到一个最终的应用程序,你应该认真考虑使用库项目,而不是手动合并的东西。它可以让你的生活更轻松。

+0

我已经尝试过去使用库项目,并没有为我工作。这是因为我的所有活动都相互参照,一旦我将项目制作成图书馆,那么参考就成为了一个方向。我是一个编程小白,所以这可能没有任何意义,但是感谢您的帮助:) – HappyGeisha 2010-10-14 17:37:45

+0

不,这是图书馆常见的问题 - 它们必须非常独立,这限制了它们的实用性。我只是觉得在这种情况下它可能是有用的,因为你说你已经孤立地开发了每一项活动,因此我认为它们已经是独立的了。如果他们不能让你的生活更轻松,那么使用它们的百分比就没有百分比。 – beekeeper 2010-10-14 18:47:12

0

检查布局 - > main.xml中的文件是正确的,包括android:id="@+id/whateverIdHasCausedYouTheError"

然后R.java文件将被更新,以包括ID ..然后砰一声,你的错误应该消失。

1

即使我们更改清单文件,问题仍然存在。 为了避免它,我们必须在我们所有的课程中添加一个import com.example.R;

例如:MainActivity.class在包2

pakage com.example.package2.Activity2 
import com.example.R; 

(TestActivity.class在包1)

pakage com.example.package1.Activity1 
import com.example.R; 
相关问题