[英]Conductor: Popping to controller without showing in view
我有一個使用Conductor處理底部導航欄導航的應用程序。 為了簡潔起見,我將盡量簡潔地描述它。 該應用程序具有足夠多的邏輯,我想盡可能地減少觸摸
我遇到的問題與ControllerChangeHandler.onChangeCompleted()
底部導航的結構是這樣。
Dashboard | Login | Doctors | Locations | More
當用戶通過“ Login
選項卡Login
, Conductor
快速彈出到我的Dashboard Controller
然后啟動一個新活動,因此,當用戶單擊“后退”按鈕時,他們將返回BottomNav活動並着陸在儀表板上。
我遇到的問題是,在新活動啟動之前,用戶能夠看到Dashboard視圖閃爍半秒鍾。
router.popToTag(newTag, null)
^^應該為ChangeHandler
傳遞null來防止視圖交換嗎? 還是簡單地交換視圖而沒有任何奇特的動畫? 我相信這就是我困惑的根源。
我希望通過將ChangeHandler
設置為null,將不會看到可見的動畫,但是視圖仍會在啟動活動之前交換。
不幸的是,我的登錄邏輯和流程緊密依賴於OnChangeCompleted()
。 所以我需要Conductor彈出新的控制器,我只需要它對用戶完全不可見...
有什么建議嗎?? 我認為,如果我的問題直接在代碼行下得到回答,將對我有很大幫助。
Conductor隨附了com.bluelinelabs.conductor.internal.NoOpControllerChangeHandler
類, com.bluelinelabs.conductor.internal.NoOpControllerChangeHandler
應適合您的用例。 查看源代碼,除了調用ControllerChangeCompletedListener.onChangeCompleted()
之外,它什么都沒有做。 據我了解,這應該意味着沒有添加或刪除視圖。
為了回答有關傳遞null
更改處理程序的問題,庫中負責處理更改的內部方法包含以下代碼:
if (inHandler == null) {
handler = new SimpleSwapChangeHandler();
} else if (inHandler.hasBeenUsed && !inHandler.isReusable()) {
handler = inHandler.copy();
} else {
handler = inHandler;
}
其中inHandler
是指您傳遞給popToTag
方法的更改處理程序。 SimpleSwapChangeHandler
確實會交換與沒有發現的動畫完全相同的視圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.