Android OnSharedPreferenceChangeListener和editor.clear()
好的,今晚早些时候我刚刚问了一个问题,关于给用户一个按钮,将实时壁纸的首选项重置为默认值。我想出来了,但在首选项屏幕关闭并重新打开之前,或者在实时壁纸本身关闭并重新打开之前,按下按钮实际上并不会调用OnSharedPreferenceChanged。以下是用于清除首选项的按钮的代码:Android OnSharedPreferenceChangeListener和editor.clear(),android,sharedpreferences,Android,Sharedpreferences,好的,今晚早些时候我刚刚问了一个问题,关于给用户一个按钮,将实时壁纸的首选项重置为默认值。我想出来了,但在首选项屏幕关闭并重新打开之前,或者在实时壁纸本身关闭并重新打开之前,按下按钮实际上并不会调用OnSharedPreferenceChanged。以下是用于清除首选项的按钮的代码: public boolean onPreferenceClick(Preference preference) { AlertDialog alertDialog = new AlertDi
public boolean onPreferenceClick(Preference preference) {
AlertDialog alertDialog = new AlertDialog.Builder(mContext).create();
alertDialog.setMessage("Are you sure you want to reset all settings to default?");
alertDialog.setCancelable(true);
alertDialog.setButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
SharedPreferences settings = getPreferenceManager().getSharedPreferences();
SharedPreferences.Editor editor = settings.edit();
editor.clear();
editor.commit();
} });
alertDialog.setButton2("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
} });
alertDialog.show();
return false;
}
});
如何使这些首选项立即应用(不使用apply()代替commit()。我的用户中只有2个是API级别9或更高的用户)。谢谢 也许您的实时壁纸是在一个单独的过程中运行的?我认为,如果改变发生在不同的过程中,听众不会被解雇:您可能需要在PreferenceActivity中使用某种广播接收器来通知墙报事情已经改变。有关可能提供更多帮助的非常类似的讨论,请参阅。使用广播接收器,让我完全按照自己的意愿行事。非常感谢!