我的活动中有一个复杂的数据对象。当用户想要编辑该对象的数据时,将显示一个类似于浮动对话框的片段。此片段引用了数据对象的某些部分。用户对此片段中的数据进行实时编辑。例如,一些简单的文本编辑。
当用户编辑这些数据时,会发生配置更改(著名的方向更改)。一旦改变,所有的东西都会被系统自动重新创建,包括像以前一样的浮动片段。
我不知道为什么,android应该重新启动activty,为什么要保存并重新加载后来手动创建的东西?但那是另一个问题。
所以,当fragment的新克隆回来时,它已经失去了与数据对象的“连接”。因为那个数据对象也消失了,我们有一个新的对象,所有用户编辑都丢失了。我想保存配置更改前的状态,然后重新获得它。
如何确定活动是否由用户启动
(应该从头开始)或者系统正在配置上重新创建。更改(应重新加载
保存的状态)?
然后,如何重新建立片段与
数据对象,以便用户可以继续编辑
发生了?

最佳答案

对于大多数问题,我找到了一些好办法:
使用setArguments()传递给片段的参数似乎被保留。
保证调用Fragment方法onAttach()。这里是数据交换和向父级注册事件。父对象可以是Activity或另一个Fragment,因此可能需要检查Fragment.getParentFragment()
AsyncTaskLoader被系统保留并自动重新连接。这里是片段的数据获取/处理代码。
使用自定义的数据管理器类,片段不像在数据库中那样保存对数据对象的引用,而是它们的数字id。
可以使用命令对象,而不是直接引用的方法调用。
让父活动将事件从一个片段广播到所有子片段,这些子片段可以充当独立订户。

07-28 02:16
查看更多