29

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

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

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

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

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

4

5 回答 5

17

这个库不再被开发。

使用结合 ViewModel 的Android 导航组件来构建向导流程。


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

于 2013-04-01T20:19:07.717 回答
12

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

于 2009-06-18T16:57:50.373 回答
6

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

于 2009-06-18T16:47:29.677 回答
2

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

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

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

于 2018-12-04T10:22:03.957 回答
1

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

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

于 2009-06-18T16:43:05.637 回答