![](/img/trans.png)
[英]Why doesn't the value get saved into SharedPreferences on app restart?
[英]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.