从当前项目中的另一个模块启动 MainActivity

Posted

技术标签:

【中文标题】从当前项目中的另一个模块启动 MainActivity【英文标题】:Start the MainActivity from another module in the current project 【发布时间】:2019-08-17 02:00:37 【问题描述】:

我正在尝试从同一项目中的另一个模块开始一项活动。我使用 Retrofit Client 并在 onResponse 我想从另一个模块开始主要活动。我使用“从 android Studio Bar 导入新模块”在我的项目中导入了模块

我尝试将 Intent 与 Class.forName() 一起使用,但它不起作用,我还尝试在清单中添加活动。我的项目 Lab 包含两个模块:app(com.example.lab) 和 home(he.kome.lis) 模块。当我尝试在应用程序清单中添加来自家的活动时,它是红色的,我得到"Unresolved class"

这是我的应用清单的样子:

<activity android:name="com.example.lab.LogInActivity">
<intent-filter>
    <action android:name="android.intent.action.MAIN"/>

    <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name="he.kome.lis.AddActivity">
</activity>

【问题讨论】:

您是否正确添加了模块作为依赖项? 是的,我做到了,我可以在同一个项目中独立运行每个模块,但不能调用活动 【参考方案1】:

首先,您需要将导入的模块作为库模块,方法是将其模块build.gradle 插件从:

apply plugin: 'com.android.application'

到:

apply plugin: 'com.android.library'

第二,如果您需要隐藏如何调用 Activity 模块的实现细节,您可以在库模块中使用 Navigator singleton class:

public class Navigator 
    private Navigator()

    public static Navigator getInstance() 
        return NavigatorHolder.INSTANCE;
    

    private static class NavigatorHolder 
      private static final Navigator INSTANCE = new Navigator();
    

    public void navigateToMainActivity(Context context) 
      Intent intent = new Intent(context, LibrariesMainActivity.class);
      context.startActivity(intent);
    

然后您可以使用以下命令启动库模块的 MainActivity:

Navigator.getInstance().navigateToMainActivity(this);

【讨论】:

【参考方案2】:

您似乎没有正确地将它们添加为您的依赖项 转到项目并右键单击然后选择打开模块设置转到依赖项选项卡并单击右侧的“+”按钮(范围标签旁边)并单击模块选项并选择所需的依赖项单击确定

【讨论】:

以上是关于从当前项目中的另一个模块启动 MainActivity的主要内容,如果未能解决你的问题,请参考以下文章

将实体从库引用到 JPA 中的另一个库

Python:从项目层次结构中同一级别的另一个目录导入模块

如何从colab中的另一个python模块调用自定义模块

如何从VUE中的另一个API加载其他JSON数据?

SpringBoot 无法从多模块 Java 应用程序中的另一个模块识别 RestController

Javascript - 从浏览器中的另一个模块设置“让”变量