簡體   English   中英

導體:彈出控制器時未在視圖中顯示

[英]Conductor: Popping to controller without showing in view

我有一個使用Conductor處理底部導航欄導航的應用程序。 為了簡潔起見,我將盡量簡潔地描述它。 該應用程序具有足夠多的邏輯,我想盡可能地減少觸摸

我遇到的問題與ControllerChangeHandler.onChangeCompleted()

底部導航的結構是這樣。

Dashboard | Login | Doctors | Locations | More

當用戶通過“ Login選項卡LoginConductor快速彈出到我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM