All*_*lan 13 android android-preferences
我将尝试解释一个简单的应用场景:我的应用程序直接进入"主视图".在这个主视图中,我插入了一个TextView
显示通过的方式创建的当前设置PreferenceManager
.为简单起见,假设我的设置中有一个复选框.当我第一次启动我的应用程序时 - TextView
我的主视图正确显示我的复选框设置(true).现在我进入设置菜单,弹出,然后我将其更改为false.我回到主视图,看不到任何变化.即使我将其改为假,它仍然可以说是真的.如果我结束应用程序然后重新启动它 - 一切都很好,它显示我的变化.
显然,当我更改设置时,主视图会停留在后台?更改设置后,如何重绘或更新主视图?
kos*_*tmo 22
您可以在主Activity中实现OnSharedPreferenceChangeListener:
@Override
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
if (PREFKEY_OF_INTEREST.equals(key))
updateSomethingInMainView();
}
Run Code Online (Sandbox Code Playgroud)
并在onCreate()调用:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(this);
Run Code Online (Sandbox Code Playgroud)
当您进入您的首选项时,您当前的活动应该暂停,并在您返回时恢复(请参阅Android 网站上生命周期图上的生命周期图)。我认为您应该能够从 onResume() 内触发某种重画。这将允许页面上的数据重新填充。我猜某种 invalidate() 调用可以做到这一点。
归档时间: |
|
查看次数: |
9942 次 |
最近记录: |