我对Android比较陌生,而且我正试图从iOS上移植一个应用程序,这有点不同寻常。
我的应用程序有一个内部xml语言来表示GUI(iOS中我们自己的nib / xib的类型或者android中的res / layout / whatever.xml,相信我,我们别无选择),以及一个通胀机制膨胀此xml并构建视图控制器和视图实例。
因此,在iOS中,我的应用程序有几个相同类的实时UIViewController实例(根据需要在导航堆栈中添加和删除),这些实例都被充气一次(来自不同的XML)并且只要应用程序保持活动状态是
现在,我对在Android中执行此操作的正确方法有点不确定。理想情况下,我希望能够创建一个Activity类的实例,每个实例的视图都从我们的xml语言中膨胀,然后在它们之间进行导航。但是,根据我的理解,这在Android中是不可能的(因为活动是由意图启动的,并且是由类创建的)。
一般来说,假设从XML中扩展GUI是必须的,并且我希望最小化重新扩展GUI的需要,您认为最干净的解决方案是什么?
任何其他提示将不胜感激...谢谢!
答案 0 :(得分:1)
我不是100%确定我理解你的情况 - 我认为你说的是你有自定义XML来定义你的布局和控制器。我将基于此回答,如果我错了,请纠正我。
首先,您的问题表明您了解当前的道路上遇到的问题。我不打算单独回答它们因为我认为有更好的解决方案 - 通过the compatibility package使用碎片。
Fragments的工作方式是你有一个Activity,然后是一系列定义UI的片段。对于手机,这最终看起来与基于活动的应用程序相同。但在你的情况下,它会提供一些奖金:
可以在代码中动态创建片段。
碎片可以从堆栈弹出,但保存在内存中,以便以后重新添加。
您可以将所有预先解析的XML存储在保留的,不可见的Fragment实例中(而不是全局Application子类)。
这并不是说碎片没有问题 - 也可能存在限制(我最近才开始使用它们)。但我会看看他们是否可以解决你的问题。
另一种选择是在内部XML和Android的XML之间编写转换(预处理)。 Android的XML View创建非常快,因为它针对它进行了优化。