Запустите MainActivity из другого модуля в текущем проекте

Я пытаюсь запустить действие из другого модуля в том же проекте. Я использую Retrofit Client и в onResponse я хочу запустить основную активность из другого модуля. Я импортировал модуль в свой проект с помощью «Импорт нового модуля из Android Studio Bar».

Я пытался использовать Intent с Class.forName(), но это не работает, я также пытался добавить в манифест действия. У меня есть лаборатория проекта, которая содержит два модуля: модули приложения (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>

Вы правильно добавили модули в качестве зависимостей?

Narendra Kothamire 26.03.2019 18:13

Да, я могу запускать каждый модуль независимо в одном проекте, но не могу вызывать активность

Mary 26.03.2019 19:52
0
2
3 227
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Кажется, вы не добавили их должным образом в качестве своей зависимости Перейдите к проекту и щелкните правой кнопкой мыши, а затем выберите «Открыть настройки модуля», перейдите на вкладку «Зависимости» и нажмите кнопку «+» справа (рядом с меткой области), выберите параметр «Модули» и выберите требуемую зависимость, нажмите «ОК».

Ответ принят как подходящий

Первый, вам нужно сделать импортированный модуль библиотечным, изменив его модуль build.gradle plugin с:

apply plugin: 'com.android.application'

к:

apply plugin: 'com.android.library'

Второй, если вам нужно скрыть детали реализации того, как вызывать модули действий, вы можете использовать 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);

Другие вопросы по теме