我有一个使用Conductor来处理其底部导航栏导航的应用程序。为了简洁起见,我将尽量简洁地描述它。 该应用程序具有适当的逻辑,我想尽可能地减少触碰
我与ControllerChangeHandler.onChangeCompleted()
有关的问题
底部导航的结构是这样。
Dashboard | Login | Doctors | Locations | More
当用户通过Login
标签登录时,Conductor
很快弹出到我的Dashboard Controller
,然后启动新的活动,因此,当用户单击“后退”按钮时,他们将返回到BottomNav活动并降落在仪表板上。
我遇到的问题是,在新活动启动之前,用户能够看到Dashboard视图闪烁半秒钟。
router.popToTag(newTag, null)
^^应该为ChangeHandler
传递null来防止视图交换吗?还是简单地交换视图而没有任何奇特的动画?我相信这就是我困惑的根源。
我希望通过将ChangeHandler
设置为null,将不会出现可见的动画,但是视图仍会在启动活动之前交换。
不幸的是,我的登录逻辑和流程紧密依赖于OnChangeCompleted()
。所以我需要Conductor弹出新的控制器,我只需要它对用户完全不可见...
有什么建议吗?我认为,如果我的问题直接在代码行下得到回答,将对我有很大帮助。
答案 0 :(得分:0)
导体随附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
确实会交换与您发现的动画完全相同的视图。