【问题标题】:After changing a preference (a setting), text showing settings doesn't update更改首选项(设置)后,显示设置的文本不会更新
【发布时间】:2010-04-13 22:58:03
【问题描述】:

我将尝试解释一个简单的应用场景:我的应用直接进入“主视图”。在这个主视图中,我插入了一个TextView,它显示了通过PreferenceManager 创建的当前设置。为简单起见,假设我的设置中有一个复选框。当我第一次启动我的应用程序时 - 我的主视图上的 TextView 正确显示了我的复选框设置(真)。现在我转到设置菜单,它会弹出,然后我将其更改为 false。我回到主视图并没有看到任何变化。即使我将其更改为假,它仍然说是真的。如果我结束应用程序然后重新启动它 - 一切都很好,它显示了我的更改。

显然,当我更改设置时,主视图只是停留在后台?更改设置后如何重绘或更新主视图?

【问题讨论】:

    标签: android android-preferences


    【解决方案1】:

    您可以在主 Activity 中实现 OnSharedPreferenceChangeListener:

    @Override
    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
        if (PREFKEY_OF_INTEREST.equals(key))
            updateSomethingInMainView();
    }
    

    在 onCreate() 调用中:

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    prefs.registerOnSharedPreferenceChangeListener(this);
    

    【讨论】:

    • 谢谢大家帮助我。那个 onResume 成功了!
    【解决方案2】:

    当您进入您的偏好设置时,您当前的活动应该暂停并在您返回时恢复(参见lifecycle diagram on the android site 上的生命周期图)。我认为您应该能够从 onResume() 中触发某种重绘。这将允许页面上的数据重新填充。我猜某种 invalidate() 调用会做到这一点。

    【讨论】:

    • 感谢您的帮助,我现在将开始调查 - 感谢您的时间!
    • 我是初学者,所以我希望这对我来说不会太难——(我也会从其他人那里获得更多帮助和例子)
    猜你喜欢
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多