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

问题描述 投票:3回答:4

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

android android-library
4个回答
3
投票

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

想象一下,您的库有一个ProjectApplication,ProjectApplication扩展了它。 LibraryActivity可以调用:

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

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

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

4
投票

有一些可能的解决方案。

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

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

祝好运!


1
投票

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


0
投票

从简单和良好的answer

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

也可以使用这个answer,使用动作。

© www.soinside.com 2019 - 2024. All rights reserved.