[英]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.