SharedPreferences不会立即更新首选项。需要重启应用

时间:2014-04-20 14:42:01

标签: java android sharedpreferences

我正在尝试根据用户偏好更新应用布局。在进行首选后,应用程序需要重新启动才能使首选项生效。我想让它立即发生而不重启。这是我的Activity类。

public class MainActivity extends Activity implements OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainactivity);
    SharedPreferences getPrefs = PreferenceManager
            .getDefaultSharedPreferences(getBaseContext());     
    theme  = getPrefs.getString("themelist", "0");
    switch(theme){
    case "0":
        setContentView(R.layout.mainactivity);
        break;
    case "1":
        setContentView(R.layout.mainactivity_black);
        break;
    }       

    initialize();
    setClickListeners();        
}

3 个答案:

答案 0 :(得分:0)

通过这种方式,您可以在启动时读取首选项,因为您正在调用onCreate中的方法。如果您想在更改发生时执行某些操作,则必须在活动中注册一个列表器并在onDestroy()中取消注册。请参阅SharedPreferences的registerOnSharedPreferenceChangeListener()方法。

答案 1 :(得分:0)

它必须与MainActivity的生命周期有关。问题是当主要活动在做出偏好后返回焦点时,onCreate()方法不会被调用。因此,将布局设置移动到onStart()或onResume()方法可以解决我的问题。

答案 2 :(得分:-1)

这将帮助您:“MODE_MULTI_PROCESS”

sharedpreferences = context.getSharedPreferences(Utils.WIDG_PREFC, MODE_MULTI_PROCESS);