Android SDK Fragments - 在多个活动中保留状态
Posted
技术标签:
【中文标题】Android SDK Fragments - 在多个活动中保留状态【英文标题】:Android SDK Fragments -- retain State over multiple activities 【发布时间】:2012-08-10 23:27:58 【问题描述】:我正在开发一个应用程序,其中我的主要活动包含在显示产品的片段的左侧。根据选择,横向视图的右侧部分显示详细信息,其中可以彻底指定产品的属性。如果应用程序在横向模式下运行,就会出现这种情况。如果方向更改为纵向模式,则用户首先选择一个产品,然后通过单独的专用活动指定产品的属性,其中每个活动恰好包含前面提到的横向视图的一个片段。
当我在运行时旋转屏幕时,问题就出现了。假设我以纵向模式启动应用程序,并选择第一个产品(Activity A,Fragment A)。下一个屏幕(单独的 Activity,称为 Activity B)将包含一个片段 B,我可以在其中指定产品的属性 1。现在我旋转屏幕。然后应用程序将显示选择第一个产品的横向视图,并且专用于产品配置的所有片段都显示在右侧。有没有一种解决方案,我可以保留用户在单独的活动(即片段B,活动B)中完成的配置,以便横向视图接收状态,以便详细信息视图可以正确显示迄今为止所做的配置?
总结一下:
我在活动 A 中,仅包含产品列表(片段 A) 我选择第一个 然后我进入一个新的活动 B,其中显示了片段 B 然后我旋转我的屏幕 然后我回到活动 A,现在包含在左侧的片段 A(列表)和右侧(以及其他)片段 B。 我希望 Activity B 中 Fragment B 的状态在 Activity A、Fragment B 中可用。
希望我能完整地说明我的问题。
TIA 杰拉德
【问题讨论】:
【参考方案1】:我现在能想到的解决方案有两种:
在这种情况下忘记 2 个活动,只用 1 个活动来解决这个场景。我有多个项目都具有这些要求。在纵向模式下,我使用 ViewSwitcher 或 ViewFlipper 来全屏显示 Fragment A 或 Fragment B。在风景上,事情和你描述的一样。这样 2 个 Fragment 可以相互通信,Fragment B 可以更新 Fragment A 上的选择。
使用 .startActivityForResult() 启动 Activity B,因此它可以为 Activity A 提供包含当前选择的结果。
【讨论】:
以上是关于Android SDK Fragments - 在多个活动中保留状态的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 中使用 Fragments 而不是 Views 有啥好处?