保存活动的片段/片段状态

时间:2015-03-20 17:16:01

标签: android android-fragments android-activity

我们假设我有一个活动,其中我有一个片段(只有一个片段)。

我希望在旋转的情况下保留片段的状态。我有两个选择:

选项A)保留活动的状态。

选项B)保留片段的状态。

有什么区别?保留活动状态将完成工作,同样保留片段。

由于

2 个答案:

答案 0 :(得分:0)

这取决于你。 如果您的活动中没有任何特定内容,则可以在片段中进行。

另一个选项是在您的android:configChanges="orientation|screenSize"文件中为您的活动添加AndroidManifest.xml,然后当您可以执行您需要执行的操作时,任何轮换更改都会在您的活动中触发android.app.Activity#onConfigurationChanged轮换。

在后面这种情况下,框架不会重新创建您的活动和片段,因此不会更改布局(不会调用onCreate)。所以很明白。

答案 1 :(得分:0)

您应该将状态保存在它所属的位置。这样可以在将来更轻松地修改您的应用,因为它可以减少组件之间的依赖关系。

假设您拥有ListFragment currentPosition。您可以将其保存在封闭式活动中,但之后Ativity会知道Fragment的内部状态,这可能是不必要的。有一天你不再需要currentPosition,如果只保存在片段中,你的其他组件可以保持不变。对于向州添加内容也是如此。

一般情况下,我会为每个有状态组件定义一个static内部State类,可能是extending Parcelable,并保存您需要的任何内部字段。 State类必须是static