繁体   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