我的活动中有一个复杂的数据对象。当用户想要编辑该对象的数据时,会显示一个类似片段的浮动对话框。该片段引用了数据对象的某些部分。用户对此片段中的数据进行实时编辑。例如,一些简单的文本编辑。
当用户编辑此数据时,会发生配置更改。(著名的方向更改)。更改后,系统会自动重新创建所有内容,包括浮动片段,就像以前一样。
我不知道为什么,Android应该刚刚重新启动Activity,为什么要保存并重新加载之后手动创建的东西?但这是另一个问题了。
因此,虽然 Fragment 的新克隆回来了,但它已经失去了“联系“到数据对象。因为该数据对象也消失了,我们有一个新的数据对象,所有用户编辑都丢失了。我想在配置更改之前保存状态并在之后重新获得它。
Activity 如何确定它是否由用户启动
(应该从头开始)或者正在由系统在配置上重新创建。更改(应该重新加载
保存状态)?
之后,如何重新建立片段的连接
数据对象,以便用户可以像以前一样继续编辑
发生了?
对于大部分问题,我找到了一些好方法:
- 使用传递给片段的参数
setArguments()
似乎被保留了。
- 致电给
Fragment
method onAttach()
是有保证的。与父级的数据交换和事件注册位于此处。家长可以是Activity
或其他Fragment
所以检查Fragment.getParentFragment()
可能需要。
-
AsyncTaskLoader
的将被保留并由系统自动重新连接。片段的数据获取/处理代码位于此处。
- 使用自定义数据管理器类,片段不保存对数据对象的引用,而是保存它们的数字 ID,就像在数据库中一样。
- 可以使用 Command 对象来代替直接引用的方法调用。
- 让父活动将事件从一个片段广播到所有子片段,这些子片段可以充当独立的订阅者。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)