2011-05-02 142 views
1

我非常新的eclipse和android开发一般和需要帮助下面。我已经建立了两款Android项目在Eclipse的Android SDK:从另一个项目中的一个项目调用类?

  1. “ORF401工程” - 目标的Android 2.2平台
  2. “地图项目” - 目标谷歌的API 2.2平台

我跟随标准Hello World Google Maps for android tutorial指定的步骤,并且在运行第二个项目时已经获得了Google地图在仿真器上显示。

我有一个菜单设置在第一个项目中,其中一个选项是加载地图。但是,我不确定如何在此项目中加载地图,因为每个项目只能指定一个构建目标,因此我无法将Google Maps API指定为(额外)构建目标。有没有办法在第一个项目中调用第二个项目的主要.java类?我看到了项目属性下的第二个项目的引用,但我不确定如何使用它。一个可能的解决办法,我在网络上发现的开关情况下,添加以下代码中的第一个项目:

Intent intent = new Intent(this, {googleMap}.class); 
startActivity(intent); 

我想这将需要在第一个项目,也是另一种活性的另外googleMap.java类,但我无法让它工作。任何人都可以提出一个建议,告诉我如何实现这个目标?

如果两个或两个项目的代码都有帮助,我很乐意发布它。谢谢

回答

0

有办法从另一个项目中的一个项目调用一个类,但这里有更大的问题。第一个项目可以在任何Android设备上运行。然而,第二个则需要Google Maps API。无论如何,您将无法调用它,因为除非您处于支持Google API的环境中,否则无法安装它。这样做实际上没有任何好处,除非项目1中有其他功能,以便它可以在没有项目2的情况下存在。

我建议使用Intent方法而不是尝试将某些东西一起破解,以允许您访问另一个类。无论如何,尽管将这两者联系起来似乎过于复杂且容易出错。我建议只需在项目1中嵌入映射功能并需要Google API。大多数主流设备都支持它们。

如果您结婚时有两个独立项目有不同构建目标的想法,我会建议您使用BroadcastReceivers与从应用程序1广播的定制意图进行调查。我不相信startActivity将跨应用程序工作因为类加载器的问题,但我可能是错误的。

+0

感谢您的回复。您是否介意通过在项目1中嵌入映射功能并需要Google API来准确描述您的意思?我已经尝试在项目1的manifest xml中添加uses-library和internet权限,并将Google API设置为构建目标(而不是Android 2.2),但是这给了我无法解决的错误。我会将扩展MapActivity添加到主.java类(对应于我为项目1创建的活动),还是创建一个全新的类并复制项目2中的内容? – 2011-05-02 21:12:44

+0

将项目2导出到.jar并将.jar添加到构建路径下的库中怎么办?是否可以让我从项目2中调用这个类而不必进行大量更改?我现在正在处理它,所以如果我知道了,我会再次发布并让您知道 – 2011-05-02 21:17:58

+0

一个项目可能是一个图书馆项目,然后可以包含在另一个项目中。然后您可以启动库中的活动。他们都必须在清单中声明。 – binnyb 2011-05-02 21:32:18

1

项目的主要想法是每个应用程序有一个项目可以完成某些工作。 我假设你的应用程序需要做一些地图以及其他的事情。没有必要分割这些想法。将它们保存在一个项目中,因为它们构成了您开发的单个应用程序。

我会建议的第一件事 - 仔细阅读活动和意图。头到 - 一切都清楚地解释。 随着全部清理完毕,您将看到制作某个按钮的要点,这些按钮会在您点击的同时打开一个新的屏幕,其中包含您开发的地图功能。然后,让我们回去或做其他事情,比如打开新的屏幕,浏览器等。

放弃试图从另一个项目调用另一个项目:)这不是我认为你想要做的东西的方式。

只是为了确保我没有被误解 - 当然你可能想要两个项目。但这些很可能会导致两个不同的应用程序。幸运的是,应用程序也可能通过意图,或内容提供者或一对多进行交互。只需查看联系人应用程序如何发送邮件即可将您带到GMail应用程序。如果这就是你想达到的目标 - 仍然需要阅读有关意图。

编辑:
这是我在评论中提到有关链接:
http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html
它说明了如何实现“额外的目标”,你想有。

+0

有理由分裂项目 – binnyb 2011-05-02 21:31:23

+0

我刚刚添加了最后一段。也许这对你来说是正确的方式@Brandon? – chemical 2011-05-02 21:33:42

+0

@binnyb你是对的,但必须记住两件事:被引用的项目将失去它在活动中使用它的资源的能力;目标平台仍然需要设置。有一种方法可以有条件的使用libs,在android开发者的团队博客上有更多的介绍。 – chemical 2011-05-02 21:40:16

相关问题