【问题标题】:Make a wizard like application in Android在 Android 中制作类似向导的应用程序
【发布时间】:2010-11-04 01:11:40
【问题描述】:

您认为在 Android 平台上执行类似向导的应用程序(用户可以使用下一步和后退按钮在屏幕之间导航,并且每个屏幕必须保存一些状态数据)的最佳方式。

我主要可以考虑两种方法:

  1. 每个屏幕都有一个活动+视图,然后我通过调用每个活动来进行屏幕切换。这样做的好处是我可以使用系统后退按钮作为我的后退处理程序,我不必自己处理,每个活动都会保存它自己的状态。

  2. 拥有一个活动和多个视图,并且我在每个屏幕中切换视图的内容发生变化,这有助于我重用更多代码,但会使保存状态变得一团糟。

你怎么看?在 Android 上执行此操作的最佳方式是什么?

【问题讨论】:

    标签: android user-interface wizard user-experience


    【解决方案1】:

    我认为 2 更好。将每个“页面”放在一个视图中,然后在显示和隐藏它们之间交替。使做漂亮的过渡变得微不足道。你想保持什么状态?唯一不能自动工作的就是焦点,我想你可能想在每次切换页面时重置它。如果您认为这对您的应用来说是正确的行为,那么回击也是微不足道的。

    使用 1,您可以重用几乎所有代码(只需定义您自己的 WizardBase 类),但我认为启动活动比在视图之间切换要慢得多(并且需要更多内存)。

    【讨论】:

      【解决方案2】:

      我选择了第一种方法,因为它看起来更自然。另一个应用程序使用ViewFlipper 来切换视图,但这与向导相差甚远。

      【讨论】:

      • @Isaac Waller 是什么?不使用 ViewFlipper?
      【解决方案3】:

      我建议使用 2,因为它符合活动和视图的目标。在这种情况下保存状态很容易 - 如果您使用 MVC 模式,您可以简单地拥有一个传递给视图的模型对象。每个视图都有可以读/写的模型部分。无论您身在何处,模型都应始终具有当前状态。如果您被丢弃,只需保存模型。恢复会自动运行,因为您在显示每个页面时已经从模型中读取。

      【讨论】:

      • 有一个库可以让您非常轻松地创建向导功能,请查看WizarDroid。它有据可查,并在不断发展中。
      • @CodePond.org 这正是我所需要的。它效果很好,我没有时间模仿这个例子。
      【解决方案4】:

      这个库不再被开发。

      使用Android Navigation Component 与 ViewModel 组合来构建向导流程。


      我开发了一个轻量级的 Android 库,它建立在 Android 的 ViewPager 之上,可用于创建类似向导的活动。看看:WizarDroid

      【讨论】:

      • 这是一个不错的解决方案,但不是很通用。对 viewpager 的依赖使得必须在任一侧创建至少一个片段,如果尚未确定下一步的内容,这可能不方便。
      • 无法弄清楚如何使用取决于支持 lib 19.x w/更新的支持 lib 版本的 Wizardroid
      • WizarDroid 库不再被开发。见github.com/nimrodda/wizardroid#deprecated
      • @DarkCygnus,在我发表评论后,该帖子被编辑为这样说。可以编辑答案,所以请记住这一点。我会删除原来的评论,而这一条,你也可以这样做,因为它们现在都无关紧要了。
      【解决方案5】:

      9 年前,这显然是一锅非常不同的鱼 - 但我认为现在最好的方法是使用 Fragments。

      向导中的每个“页面”都有一个片段,让它处理自己的生命周期和状态。

      使用Fragment.getFragmentManager() 从每个 Fragment 中更改页面 - 这会从父 Activity 返回 FragmentManager,从而允许 Fragment 自行替换。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多