我尝试使用Conductor库但是有一个backstack问题。 我在底部导航面板中有一个带有4个按钮的活动。 ACTIVITY中的每个按钮打开4个控制器中的1个: - 今日新闻(根控制器) - 热门新闻 - 市场新闻 - 监管新闻
我需要将所有控制器添加到backstack,当我点击后退按钮时,我必须返回到前一个控制器。 例如: 今天 - >市场 - >趋势 如果我点击趋势控制器中的后退按钮,我必须返回市场e.t.c. 但是当我在任何控制器中点击后面时,现在活动正在关闭。 我该如何实现这种行为? 这是我活动中的代码:
@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()));
}
答案 0 :(得分:2)
我猜你忘了在onBackPressed()
Activity
router.handleBack()
处理backstack导航,因此如果此方法调用并返回true
,则路由器弹出backstack,othervise(例如backstack为空)返回false
@Override
public void onBackPressed() {
if (!router.handleBack()) {
super.onBackPressed();
}
}