Обработка заднего стека в проводнике
Я пытаюсь использовать библиотеку Conductor, но у меня проблема с backstack. У меня есть активность с 4 кнопками в нижней панели навигации. Каждая из кнопок в ACTIVITY открывает 1 из 4 контроллеров: - сегодняшние новости (корневой контроллер) - трендовые новости - новости рынка - регуляторные новости
Мне нужно добавить все контроллеры в backstack, и когда я нажимаю на кнопку назад, я должен вернуться к предыдущему контроллеру. Например: Сегодня -> Рынок -> Тенденция Если я нажимаю на кнопку "Назад" в контроллере "Тенденции", я должен вернуться на "Маркет" и т. Д. Но теперь активность закрывается, когда я нажимаю на спину в любом контроллере. Как я могу реализовать это поведение? Это код в моей деятельности:
@Override
public void navigateToMarketHighlights() {
MarketHighlightsController marketHighlightsController = new MarketHighlightsController();
router.pushController(RouterTransaction.with(marketHighlightsController)
.popChangeHandler(new FadeChangeHandler())
.pushChangeHandler(new FadeChangeHandler()));
}
@Override
public void navigateToTrendingNow() {
TrendingNowController trendingNowController = new TrendingNowController();
router.pushController(RouterTransaction.with(trendingNowController)
.popChangeHandler(new FadeChangeHandler())
.pushChangeHandler(new FadeChangeHandler()));
}
@Override
public void navigateToTodayView() {
TodayController todayController = new TodayController();
router.pushController(RouterTransaction.with(todayController)
.popChangeHandler(new FadeChangeHandler())
.pushChangeHandler(new FadeChangeHandler()));
}
@Override
public void navigateToRegulatoryUpdatesView() {
RegulatoryUpdatesController regulatoryUpdatesController = new RegulatoryUpdatesController();
router.pushController(RouterTransaction.with(regulatoryUpdatesController)
.popChangeHandler(new FadeChangeHandler())
.pushChangeHandler(new FadeChangeHandler()));
}
1 ответ
Я думаю, вы просто забыли справиться onBackPressed()
в вашем Activity
router.handleBack()
работа с backstack навигацией, поэтому маршрутизатор выдает backstack, если этот метод вызван и возвращает true
, othervise (например, backstack пуст) возвращает false
@Override
public void onBackPressed() {
if (!router.handleBack()) {
super.onBackPressed();
}
}