代码之家  ›  专栏  ›  技术社区  ›  Lucas S.

在Android中创建类似向导的应用程序

  •  29
  • Lucas S.  · 技术社区  · 17 年前

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

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

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

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

    你怎么认为?在Android上,哪种方法是最好的?

    5 回复  |  直到 7 年前
        1
  •  12
  •   AdamC    17 年前

    我建议使用2,因为它符合活动和视图的目标。在这种情况下,保存状态很容易——如果您使用MVC模式,您只需拥有一个传递给视图的模型对象。每个视图都将具有模型中可以读/写的部分。无论您在哪里,模型都应该具有当前状态。如果您被释放,只需保存模型。恢复会自动工作,因为您在显示每个页面时已经从模型中读取了数据。

        2
  •  17
  •   Nimrod Dayan    11 年前

    我开发了一个轻量级的android库,它建立在android的viewpager之上,可以用来创建类似向导的活动。过来看: WizarDroid .

        3
  •  6
  •   yanchenko    17 年前

    我已经采用了第一种方法,因为它看起来更自然。其他应用程序使用 ViewFlipper 用于切换视图,但这与向导无关。

        4
  •  1
  •   hacken    17 年前

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

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

        5
  •  0
  •   Luke Needham    7 年前

    9年前,这显然是一壶完全不同的鱼,但我认为现在最好的方法是用碎片。

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

    从每个片段中更改页面 Fragment.getFragmentManager() -这将从父活动返回FragmentManager,从而允许片段替换自身。