2017-07-25 71 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