在Resume上重新加载PreferenceActivity中的首选项

时间:2011-09-19 03:32:32

标签: android reload sharedpreferences preferenceactivity preference

在我的应用中,某些设置可能会在PreferenceActivity未打开时更改,而我遇到的问题是addPreferencesFromResource中调用了onCreate,所以说,我打开PreferenceActivity,然后从那里转到另一个屏幕,然后执行更改设置的操作,然后按后退键返回PreferenceActivity,然后某些设置未更改布局。

那么,每次调用Preferences(或onResume)时如何重新加载所有onStart()而不重复布局?

2 个答案:

答案 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重新加载。毋庸置疑,如果您希望能够使用后退按钮返回首选项屏幕,则此方法无效。