【问题标题】:Start the MainActivity from another module in the current project从当前项目中的另一个模块启动 MainActivity
【发布时间】: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>

【问题讨论】:

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

标签: android android-intent android-manifest


【解决方案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】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多