更新时在View中反映设置更改

时间:2013-08-07 11:14:44

标签: android sharedpreferences

在我的Android应用中,我使用SharedPreferences让用户管理一些设置。现在,在用户更改任何设置并从设置页面返回应用程序后,我希望我的视图(片段)使用SharedPreferences中的最新值。

更改可能包括重新加载自定义视图以使用配色方案或删除列表视图的过滤。

目前仅在重新启动应用时,才会应用所需的更改。我确信有办法解决我的问题,但我无法弄明白。

假设我支持Android 2.2及更高版本,因此除非它出现在支持库中,否则任何较新的API都不会被使用。

2 个答案:

答案 0 :(得分:1)

不完全确定您的问题是什么,但在我看来,当您的用户更改设置然后点击后退按钮返回到片段时,您没有看到更改?如果是这种情况,那是因为当用户返回时,android会恢复堆栈中的片段版本(在进行任何更改之前的版本)。我的建议是尝试将新共享首选项的加载移动到片段的onResume方法。这样他们就应该在用户回来时加载。

试试这个

@Override
public void onResume(){
super.onResume();
setContentView(R.layout.currentFrag); 

}

这应该重新加载页面并进行正确的更改。

答案 1 :(得分:0)

您需要使用onWindowFocusChanged方法检查当前活动是否已失去焦点。

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    // TODO Auto-generated method stub
    super.onWindowFocusChanged(hasFocus);
    // Add the code to perform on the fragments after the settings have changed.
}