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

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

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

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

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

有帮助吗?

解决方案

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

其他提示

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

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

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

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

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

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

使用 Fragment.getFragmentManager(每个片段)更改页面) - 从父Activity返回FragmentManager,允许Fragment替换自己。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top