我们假设我有一个活动,其中我有一个片段(只有一个片段)。
我希望在旋转的情况下保留片段的状态。我有两个选择:
选项A)保留活动的状态。
选项B)保留片段的状态。
有什么区别?保留活动状态将完成工作,同样保留片段。
由于
答案 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
但