2017-07-25 67 views
1

我尝试使用Conductor库,但是后台堆栈存在问题。 我有一个在底部导航面板中有4个按钮的活动。 每个在活动中的按钮打开4个控制器的1: - 今日新闻网(根控制器) - 趋势新闻 - 市场新闻 - 监管新闻导体背堆栈处理

我需要添加所有controlers到堆栈中,当我点击后退按钮,我必须返回到前一个控制器。 例如: 今日 - >市场 - >趋势 如果我点击趋势控制器中的后退按钮,我必须返回市场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())); 
} 

回答

1

我猜你只是忘了在Activity

router.handleBack()处理堆栈中的导航处理onBackPressed(),因此路由器弹出堆栈中如果调用此方法,并返回true,othervise (例如,后台是空的)它返回false

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

非常感谢!我在我的代码中使用了它,但它不起作用。 我刚刚重新启动了一个工作室,它的工作原理! ) – Alex