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();
}
}
我尝试使用 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();
}
}