更改首选项(设置)后,显示设置的文本不会更新

时间:2010-04-13 22:58:03

标签: android android-preferences

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

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

2 个答案:

答案 0 :(得分:22)

您可以在主要活动中实施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);

答案 1 :(得分:4)

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