Использование другого класса для Intent на основе вкуса - PullRequest
1 голос
/ 02 июля 2019

В настоящее время мы работаем с flavors для создания различных приложений с одинаковой кодовой базой. Я столкнулся с этим сценарием:

У меня есть два приложения, приложение A и приложение B . Внутри src/main, так что в обеих сферах у меня есть действие под названием Start_Activity. От Start_Activity я хочу перейти к A_Activity или B_Activity, в зависимости от того, в каком приложении мы находимся. A_Activity и B_Activity относятся только к их соответствующим разновидностям.

Какой лучший способ попытаться это сделать? Я не хочу переходить Start_Activity на отдельные варианты, поскольку это лишило бы смысла повторное использование кода.

Можно ли разрешить класс активности для Intent из файлов ресурсов или из манифеста? Или я могу создать только класс с одноименными константами, который существует в каждом варианте?

Редактировать

Я не упомянул, что специально не хочу использовать метод, в котором действия имеют одно и то же имя и существуют только в пределах их соответствующих разновидностей (например, переименовывая оба A_Activity и B_Activity в X_Activity).

Я не хочу использовать это, потому что я могу столкнуться с ситуацией, когда у меня есть Приложение C , которое также хочет использовать A_Activity. Используя этот метод, мне понадобится файл A_Activity в обоих вариантах для приложения A и приложения C , который недостаточно чист для того, что я хочу сделать.

Ответы [ 2 ]

1 голос
/ 02 июля 2019

В Start_Activity вы можете создать начальное намерение с помощью Intent.parseUri (..) , которое можно загрузить из файла конфигурации или строкового ресурса

1 голос
/ 02 июля 2019

Смотрите здесь: https://stackoverflow.com/a/16746755/7325737

"Если вы хотите иметь другую версию одного и того же класса в двух вариантах, вам нужно создать ее в обоих вариантах.

src/flavor1/java/com/foo/A.java
src/flavor2/java/com/foo/A.java

И тогда ваш код в src / main / java может сделать

import com.foo.A

в зависимости от выбранного вкуса, используется правильная версия com.foo.A. "

Я думаю, это должно вам помочь!

...