如何从图书馆开始主要活动?

时间:2012-08-20 14:32:12

标签: android android-library

我正在使用Project A和一个库项目开发我的Android应用程序。这两个项目都有活动。如果我目前在项目A中,那么只需导入它就可以轻松地在库项目中启动一个活动。但是,如果我来自图书馆项目中的活动,我不确定如何在项目A中启动活动。我正在尝试使库项目独立于项目A的包名,因为我将它用于多个应用程序。关于如何做到这一点的任何想法?感谢。

4 个答案:

答案 0 :(得分:4)

有一些可能的解决方案。

最好的方法是在您希望其他项目可以访问的活动的Manifest条目中注册intent filter。关于意图过滤器here有一个很棒的教程。

另一种选择是将一个Class传递给库项目,并使用Intent (Context packageContext, Class cls)构造函数创建一个触发并启动活动的意图。然而,使用意图过滤器将是一种更好的实践和学习经验。

祝你好运!

答案 1 :(得分:3)

我相信这是最简单的答案:你需要一个存在于库中的对象,你可以在你的项目中扩展它。

想象一下,您的库具有ProjectApplication扩展的LibraryApplication。 LibraryActivity可以调用:

((LibraryApplication)getApplication()).startNewActivity(this, "goHome")

您的ProjectApplication实现了这个新方法:

public void startNewActivity(Context context, String action) {
    if("goHome".equals(action)) {
        startActivity(context, ProjectHomeActivity.class);
    }
}

答案 2 :(得分:1)

您可以将项目添加为外部库。你也可以使用maven来做这类事情。

答案 3 :(得分:0)

简单而又好的answer

try {
   startActivity(new Intent(this, Class.forName("com.package.HomeActivity")));
 } catch (ClassNotFoundException e) {
    e.printStackTrace();
 }

answer也可以通过操作来实现。