在我的应用中,某些设置可能会在PreferenceActivity
未打开时更改,而我遇到的问题是addPreferencesFromResource
中调用了onCreate
,所以说,我打开PreferenceActivity
,然后从那里转到另一个屏幕,然后执行更改设置的操作,然后按后退键返回PreferenceActivity
,然后某些设置未更改布局。
那么,每次调用Preferences
(或onResume
)时如何重新加载所有onStart()
而不重复布局?
答案 0 :(得分:3)
编辑:此解决方案仅适用于API 11 +。
我不确定我是否完全理解你的问题,但你可以添加一个调用来重新创建()到活动的onResume,从我的理解中,活动再次经历整个生命周期。
为了确保只在实际存在脏数据时才这样做,我会在SharedPreferences中设置一个标志,让你的活动在onResume()中知道它需要重新创建。
public void onResume(){
super.onResume();
SharedPreferences pref = getApplicationContext().getSharedPreferences(Constants.PREFS_NAME, Context.MODE_PRIVATE);
if(pref.getBoolean("isDirtyPrefs", true))
recreate();
}
答案 1 :(得分:1)
我有类似的问题。如果没有找到一种简单的方法让我的PreferenceActivity自行刷新,我的解决方案就是将其添加到我的PreferenceActivity中:
/**
* Called when activity leaves the foreground
*/
protected void onStop() {
super.onStop();
finish();
}
这将导致Prefs屏幕在下次启动时从SharedPreferences重新加载。毋庸置疑,如果您希望能够使用后退按钮返回首选项屏幕,则此方法无效。