刷新首选项PreferenceActivity上的继续
在我的应用程序,一些设置可能被改变,而PreferenceActivity
是不公开的,我遇到了一个问题,就是addPreferencesFromResource
被称为onCreate
,所以说,我打开PreferenceActivity
,然后从那里转到另一个屏幕,然后执行一些更改设置的操作,然后按返回键返回到PreferenceActivity
,然后在布局上某些设置没有更改。刷新首选项PreferenceActivity上的继续
那么,如何在每次调用onResume
(或onStart()
)时重新加载所有Preferences
而不重复布局?
编辑:该解决方案将用于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();
}
我有类似的问题。未能找到一个简单的方法,使我PreferenceActivity刷新自己,我的解决办法是把它添加到我的PreferenceActivity:
/**
* Called when activity leaves the foreground
*/
protected void onStop() {
super.onStop();
finish();
}
这将导致偏好设置屏幕从SharedPreferences未来它启动时重新加载。毋庸置疑,如果您希望能够通过使用后退按钮返回到首选项屏幕,则此方法将不起作用。
我认为,但我的'PreferenceActivity'启动等活动,将刚刚太麻烦了覆盖'onKeyDown'和'onKeyUp'这些活动重新开始我的'PreferenceActivity'。不过谢谢你的建议。 – Jakar
谢谢。我还没有测试过,但看起来会起作用。我没有意识到我在PreferenceActivity和PreferenceManager中看到的recreate()命令。但是谢谢你,因为那正是我想要的。 – Jakar
重新创建是API拉特11 – Blundell
我建议你测试出来的逻辑,因为这样会循环一遍又一遍,因为的onResume将在生命周期过程中被调用,如果开发商不设置优先级,或者不存在,比它会默认为true并循环。 –