【问题标题】:How to implement wizard-like navigation flow with Conductor?如何使用 Conductor 实现类似向导的导航流程?
【发布时间】:2018-03-30 15:13:34
【问题描述】:

我正在使用 Conductor 构建一个 Android 应用。假设该应用具有以下屏幕

  • 小部件列表
  • 小部件详细信息
  • 创建小部件:步骤 1
  • 创建小部件:第 2 步

如何使用 Conductor 实现以下导航流程?

  1. 用户启动应用,Widget List控制器被推送。
  2. 用户点击 New Widget,Create Widget: Step 1 控制器被推送。
  3. 用户点击 Go to Step 2,Create Widget: Step 2 控制器被推送。
  4. 用户单击确认,小部件已创建,现在我想弹出 创建小部件:步骤 1创建小部件:步骤 2 并推送 小部件详细信息 用于新创建的小部件。

如果我一直弹回到Widget List,然后推送Widget DetailsWidget List 会暂时显示在 之前显示小部件详细信息

我如何在单个事务中实现这一点,并将用户直接带到 Widget 详细信息,同时同时弹出 Create Widget: Step 1Create Widget:第 2 步 从后台堆栈?

【问题讨论】:

    标签: android conductor


    【解决方案1】:

    推送步骤时可以使用 router.setBackstack() 方法并使用标签进行后续过滤:

    1. 设置根控制器

      if (!hasRootController()) {
          setRoot(RouterTransaction.with(listController).tag("list"))
      }
      
    2. 推第一个控制器

      router.pushController(RouterTransaction.with(firstStepController).tag("step1"))
      
    3. 推动第二个控制器

      router.pushController(RouterTransaction.with(secondStepController).tag("step2"))
      
    4. 推送细节控制器

      router.setBackstack(
          router.backstack.filter { it.tag() != "step1" && it.tag() != "step2" } + RouterTransaction.with(detailController).tag("detail")
          SimpleSwapChangeHandler() // Or other change handler for proper animation
      )
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多