在Android中制作类似应用程序的向导

时间:2009-06-18 15:44:42

标签: android user-interface wizard user-experience

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

我主要可以用两种方法思考:

  1. 每个屏幕都有一个活动+视图,然后我通过调用每个活动来切换屏幕。令我感到高兴的是,我可以使用系统后退按钮作为我的后台处理程序,我不需要自己处理,因为每个活动都会保存它自己的状态。

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

  3. 你怎么看?在Android上执行此操作的最佳方式是哪种?

5 个答案:

答案 0 :(得分:17)

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

答案 1 :(得分:12)

我建议选择2,因为它符合活动和观点的目标。在这种情况下保存状态很简单 - 如果使用MVC模式,您可以简单地将一个模型对象传递给视图。每个视图都包含可以读/写的模型部分。无论您身在何处,模型都应始终具有当前状态。如果您处理完毕,只需保存模型即可。由于您在显示每个页面时已从模型中读取,因此还原会自动生效。

答案 2 :(得分:6)

我已经采用了第一种方法,因为它看起来更自然。另一个应用程序使用ViewFlipper来切换视图,但这远不像向导那样。

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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

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

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