3

我尝试使用 Conductor 库,但 backstack 有问题。我在底部导航面板中有一个带有 4 个按钮的活动。ACTIVITY 中的每个按钮打开 4 个控制器中的 1 个: - 今日新闻(根控制器) - 趋势新闻 - 市场新闻 - 监管新闻

我需要将所有控制器添加到 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()));
}
4

1 回答 1

3

我猜你只是忘记处理onBackPressed()你的Activity

router.handleBack()处理 backstack 导航,因此如果调用此方法并返回true,路由器将弹出 backstack,否则(例如 backstack 为空)它返回false

@Override
public void onBackPressed() {
    if (!router.handleBack()) {
        super.onBackPressed();
    }
}
于 2017-07-25T07:53:11.813 回答