Conductor 中的返回堆栈处理

Back stack handling in Conductor

我尝试使用 Conductor 库,但遇到了 backstack 问题。 我在底部导航面板中有一个带有 4 个按钮的 activity。 ACTIVITY 中的每个按钮都会打开 4 个控制器中的一个: - 今日新闻(根控制器) - 热门新闻 - 市场消息 - 监管新闻

我需要将所有控制器添加到 backstack,当我点击后退按钮时,我必须 return 到前一个控制器。 例如: 今天 -> 市场 -> 趋势 如果我点击 Trending 控制器中的后退按钮,我必须 return 到市场 e.t.c。 但是现在 activity 正在关闭,当我点击任何控制器的背面时。 我该如何实现这种行为? 这是我 activity:

中的代码
    @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()));
}

我猜你只是忘了在 Activity

中处理 onBackPressed()

router.handleBack() 处理返回堆栈导航,所以如果此方法被调用并且 returns true 路由器弹出返回堆栈,否则(例如返回堆栈为空)它 returns false

@Override
public void onBackPressed() {
    if (!router.handleBack()) {
        super.onBackPressed();
    }
}