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

Ree*_*eed 9 android reload preference preferenceactivity sharedpreferences

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

那么,如何在不重复布局的情况下调用所有Preferences每次onResume(或onStart())重新加载?

Joe*_*ouz 3

编辑:此解决方案仅适用于 API 11 +。

我不确定我是否完全理解您的问题,但您可以在活动的 onResume 中添加对 recreate() 的调用,根据我的理解,该活动可以再次经历整个生命周期。

为了确保您只在确实存在脏数据时才执行此操作,我会在 SharedPreferences 中设置一个标志,让您的活动在 onResume() 中知道它需要重新创建。

    public void onResume(){
            super.onResume();
            SharedPreferences pref = getApplicationContext().getSharedPreferences(Constants.PREFS_NAME, Context.MODE_PRIVATE);
            if(pref.getBoolean("isDirtyPrefs", true))
                recreate();
        }
Run Code Online (Sandbox Code Playgroud)