Java SharedReferences不会立即更新首选项。需要重新启动应用程序
我正在尝试根据用户偏好更新应用程序布局。做出首选项后,应用程序需要重新启动以使首选项生效。我希望它立即发生而不重新启动。这是我的活动课Java SharedReferences不会立即更新首选项。需要重新启动应用程序,java,android,sharedpreferences,Java,Android,Sharedpreferences,我正在尝试根据用户偏好更新应用程序布局。做出首选项后,应用程序需要重新启动以使首选项生效。我希望它立即发生而不重新启动。这是我的活动课 public class MainActivity extends Activity implements OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); se
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中调用这些方法。如果要在发生更改时执行某些操作,必须在活动中注册listner,然后在onDestroy中注销它。请参阅RegisterOnSharedReferenceChangeListener方法的SharedReferences。这与Main活动的生命周期有关。问题是,当主活动在做出首选项后返回焦点时,onCreate方法不会被调用。因此,将布局设置移动到onStart或onResume方法解决了我的问题。这将帮助您:模式多进程
SharedReferences=context.getSharedReferenceSutils.WIDG_PREFC,模式多进程 举个例子,请参见第一个响应:RegisterOnSharedReferenceChangeListener和unregisterOnSharedPreferenceChangeListener首选项侦听器没有帮助。我试过了。我想你的问题在于运行时的主题,而不是共享首选项。请看这里: