【问题标题】:android view pager fragments update from sharedpreferences从sharedpreferences更新android视图寻呼机片段
【发布时间】:2012-11-27 08:01:27
【问题描述】:

我成功地将我的应用程序从活动转换为带有 2 个选项卡/片段并在它们之间滑动的选项卡/分段应用程序:)

现在我有 2 个标签: 1 - 主选项卡 - 根据存储在共享首选项中的设置显示文本字段和内容。 2 - 设置 - 提供一些输入来更改这些共享偏好。

问题是,当我更改设置(共享首选项)时,主选项卡不会根据新的共享首选项进行更新。

我正在寻找一种解决方案来更新主选项卡,并且可能在未来的另一个或两个选项卡中更新共享首选项(从设置选项卡)并尽可能多地解耦。 我不希望设置选项卡显式保存对其他片段的引用并执行更新...

我尝试实现某种观察者模式,其中设置选项卡宣布在设置更改后需要更新,但没有找到如何让其他选项卡实际执行更改,因为它们位于视图寻呼机中,这有点复杂问题...

感谢任何帮助。 我使用的 TabsAdapter 来自: http://developer.android.com/reference/android/support/v4/view/ViewPager.html

【问题讨论】:

    标签: android tabs settings android-viewpager preferences


    【解决方案1】:

    你有两个选择:

    1. 通过主Activity重新加载所有片段,在设置片段中使用getActivity()

    2. 创建一个名为SettingsListener 的接口,该接口将具有类似onSettingsChanged() 的功能,并在应更新的片段中实现它。设置片段将包含一个侦听器列表。

    【讨论】:

    • Toda,一些后续问题:1->片段是在视图寻呼机中管理的,那么我如何告诉它更新它的片段,或者只是“重绘”?
    • 2-> 经典的观察者/听众模式。我忘记了其中的观察者/听众 :) 问题仍然是视图寻呼机。它管理片段,所以我不知道如何管理设置片段的侦听器的注册(可能还有删除)...
    • 贝瓦卡沙 :) 1&2。实际上,您不必重新加载所有这些,您可以在主要活动中拥有一个仅更新所需片段的功能。在哪里做取决于你在哪里创建片段——在活动中还是在 ViewPager 适配器中?您是否在 getItem() 函数中重新创建它们?或者你有每个片段的永久实例?
    • 如果您不想在每次销毁和重新创建侦听器列表时丢失它,您应该使您的设置片段永久化。或者您可以将侦听器列表保存在适配器中,然后在 getItem() 函数中执行以下操作:如果它是设置片段 -> 将其发送到侦听器列表,否则 -> 将此片段添加到列表中
    • 直到现在才来得及实施。无论如何 - 我找到的唯一解决方案(在您的帮助下)是自己处理 viewpager 片段。适配器必须持有一个位置->片段的地图 - 将它放在 getItem 上,在 destroyXX 上删除。当需要更新获取视图寻呼机的适配器时,遍历地图并决定哪个需要更新(我使用界面进行了此操作)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多