android - Conductor:弹出到 Controller 而不显示在 View 中

标签 android kotlin controller bottomnavigationview conductor

我有一个应用程序使用 Conductor 来处理它的底部导航栏导航。为了简洁起见,我将尽量简明扼要地描述它。 该应用程序有大量逻辑,我希望尽可能少地触及这些逻辑

我遇到的问题与 ControllerChangeHandler.onChangeCompleted()

有关

底部导航结构如下..

仪表板 |登入 |医生 |地点 |更多

当用户通过 Login 选项卡登录时,Conductor 会很快弹出到我的 Dashboard Controller 然后启动一个新 Activity ,这样当用户点击后退按钮时,他们将返回到 BottomNav Activity 并登陆仪表板。

我遇到的问题是,在新 Activity 启动之前,用户能够看到仪表板 View 闪烁半秒钟。

  router.popToTag(newTag, null)

^^ 是否应该为 ChangeHandler 传递 null 以防止任何 View 交换?或者它会在没有任何花哨的动画的情况下简单地交换 View ?我相信这就是我困惑的根源。

我希望通过将 ChangeHandler 设置为 null,不会有可见的动画,但在启动 Activity 之前 View 仍然会交换。

不幸的是,我的登录逻辑和流程紧密依赖于 OnChangeCompleted()。所以我需要 Conductor 弹出到新 Controller ,我只需要它对用户完全不可见...

有什么建议吗?我认为,如果直接在代码行下的问题得到解答,那将对我有很大帮助。

最佳答案

Conductor 附带 com.bluelinelabs.conductor.internal.NoOpControllerChangeHandler 类,它应该适合您的用例。查看源代码,除了调用 ControllerChangeCompletedListener.onChangeCompleted() 外,它什么也没做。据我了解,这应该意味着没有添加或删除任何 View 。

要回答有关传递 null 更改处理程序的问题,库中负责处理更改的内部方法包含以下代码:

if (inHandler == null) {
    handler = new SimpleSwapChangeHandler();
} else if (inHandler.hasBeenUsed && !inHandler.isReusable()) {
    handler = inHandler.copy();
} else {
    handler = inHandler;
}

其中 inHandler 是指您传递给 popToTag 方法的更改处理程序。 SimpleSwapChangeHandler 会完全按照您所发现的那样交换 View ,但没有动画。

关于android - Conductor:弹出到 Controller 而不显示在 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57876139/

相关文章:

Laravel:在一行中创建 API Controller 、模型和迁移

java - 从一分钟内获得的一组经度和纬度值计算速度?

android - 如何在没有php的情况下从android访问mySQL数据库

Android fragment 无法正确替换

java - 将 Java 赋值表达式转换为 Kotlin

dictionary - 如何获取 TreeMap 中索引的键

inheritance - 如何让数据类在 Kotlin 中实现接口(interface)/扩展父类(super class)属性?

javascript - Angularjs - 将 $scope 传递给 Controller

android - 无法将填充添加到 android 中的复选框

multithreading - Spring @Controller 生命周期