9

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

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

4

2 回答 2

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();
        }
于 2011-09-19T04:10:13.850 回答
1

我有一个类似的问题。未能找到一种简单的方法让我的 PreferenceActivity 自行刷新,我的解决方案是将其添加到我的 PreferenceActivity 中:

/**
 * Called when activity leaves the foreground
 */
protected void onStop() {
    super.onStop();
    finish();
}

这将导致 Prefs 屏幕在下次启动时从 SharedPreferences 重新加载。不用说,如果您希望能够通过使用返回按钮返回您的首选项屏幕,这种方法将不起作用。

于 2011-10-05T11:31:05.017 回答