Возврат к первому действию в стеке действий без явного вызова

Я разрабатываю приложение, которое состоит из двух библиотечных проектов. Оба проекта библиотеки используются самим приложением.

Первый библиотечный проект можно рассматривать как основной библиотечный проект, поскольку он содержит главное меню в виде панели для всего приложения. Из одной записи в панели управления пользователь может начать действие, которое является частью второго библиотечного проекта.

Все действия и любые последующие действия, которые можно начать с этого действия, также являются частью второго библиотечного проекта. Так что второй библиотечный проект ничего не знает о первом.

В конце потока действий пользователь должен вернуться к активности панели, нажав одну кнопку. Поэтому мне нужно очистить весь стек действий, кроме первого (панель инструментов). Обычно я бы сделал это, запустив действие Dashboard с флагом FLAG_ACTIVITY_CLEAR_TOP. Также использование FLAG_ACTIVITY_NO_HISTORY не будет возможным, так как мне нужна история.

Но, как я упоминал ранее, ни один из компонентов второго библиотечного проекта не должен ничего знать о главном библиотечном проекте. Поэтому вызов активности Dashboard с флагом не является решением.

Поэтому я ищу способ завершить все действия второго библиотечного проекта, но не действия панели мониторинга основного библиотечного проекта.

1 ответ

Решение

Когда ваша панель инструментов вызывает второе действие, связывайте имя класса (как строку) в намерении. Во втором упражнении вы можете использовать это имя класса, чтобы создать намерение вернуться.

использование MyActivity.getClass().getName() сформировать строку.

использование Class.forName(className) чтобы вернуть класс.

Изменить: Вам также может понадобиться получить полное имя пакета для forName() работать: .getClass().getPackage().getName()

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