【发布时间】:2012-08-20 14:32:12
【问题描述】:
我正在使用一个项目 A 和一个库项目来开发我的 Android 应用程序。这两个项目都有活动。如果我目前在项目 A 中,那么只需导入即可轻松启动库项目中的活动。但是,如果我来自图书馆项目中的活动,我不确定如何在项目 A 中启动活动。我正在尝试使库项目独立于项目 A 的包名称,因为我将它用于多个应用程序。关于如何做到这一点的任何想法?谢谢。
【问题讨论】:
我正在使用一个项目 A 和一个库项目来开发我的 Android 应用程序。这两个项目都有活动。如果我目前在项目 A 中,那么只需导入即可轻松启动库项目中的活动。但是,如果我来自图书馆项目中的活动,我不确定如何在项目 A 中启动活动。我正在尝试使库项目独立于项目 A 的包名称,因为我将它用于多个应用程序。关于如何做到这一点的任何想法?谢谢。
【问题讨论】:
有几种可能的解决方案。
最好在清单条目中为您希望其他项目访问的活动注册intent filter。有一个关于意图过滤器的很棒的教程here。
另一个选项是将一个类传递给库项目,并使用Intent (Context packageContext, Class cls) 构造函数创建一个意图来触发和启动活动。不过,使用意图过滤器会是一种更好的实践和学习体验。
祝你好运!
【讨论】:
我相信这是最简单的答案:您需要一个存在于库中的对象,您可以在您的项目中对其进行扩展。
想象一下,您的库有一个您的 ProjectApplication 扩展的 LibraryApplication。 LibraryActivity 可以调用:
((LibraryApplication)getApplication()).startNewActivity(this, "goHome")
您的 ProjectApplication 实现了这个新方法:
public void startNewActivity(Context context, String action) {
if("goHome".equals(action)) {
startActivity(context, ProjectHomeActivity.class);
}
}
【讨论】:
您可以将项目添加为外部库。你也可以使用 maven 来做这种事情。
【讨论】: