首页 > 解决方案 > 从当前项目中的另一个模块启动 MainActivity

问题描述

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

我尝试使用 IntentClass.forName()但它不起作用,我还尝试在清单中添加活动。我的项目 Lab 包含两个模块:app(com.example.lab) 和 home(he.kome.lis) 模块。当我尝试在 app-manifest 中添加来自家的活动时,它是红色的,我得到"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>

标签: androidandroid-intentandroid-manifest

解决方案


首先build.gradle,您需要通过将其模块插件从以下位置更改为导入的模块作为库模块:

apply plugin: 'com.android.application'

至:

apply plugin: 'com.android.library'

其次,如果您需要隐藏如何调用 Activity 模块的实现细节,您可以在库模块中使用 Navigator单例类:

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);

推荐阅读