繁体   English   中英

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

[英]SharedPreferences doesn't update preferences immediately. Requires app restart

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

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();        
}

这样,您将在启动时阅读首选项,因为您正在onCreate中调用方法。 如果要在发生更改时执行某些操作,则必须在活动中注册一个列表器,然后在onDestroy()中注销它。 请参阅SharedPreferences的registerOnSharedPreferenceChangeListener()方法。

它必须与MainActivity的生命周期有关。 问题在于,在进行首选项设置后,主活动返回焦点时,不会调用onCreate()方法。 因此,将布局设置移动到onStart()或onResume()方法可以解决我的问题。

这将帮助您:“MODE_MULTI_PROCESS”

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM