OnSharedPreferenceChangeListener и editor.clear () - PullRequest
1 голос
/ 27 июня 2011

Ладно, сегодня вечером я только что задал вопрос о том, чтобы дать пользователям кнопку для сброса настроек Live Wallpaper к их настройкам по умолчанию.Я понял это, но нажатие кнопки фактически не вызывает OnSharedPreferenceChanged до тех пор, пока экран настроек не будет закрыт и вновь открыт, или пока сами живые обои не будут закрыты и открыты.Вот код для кнопки, которая очищает настройки:

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 или выше).Спасибо!

1 Ответ

2 голосов
/ 27 июня 2011

Возможно, ваши живые обои запускаются в отдельном процессе? Я не верю, что слушатель будет уволен, если изменение произойдет в другом процессе: вам, вероятно, потребуется использовать какой-то BroadcastReceiver в PreferenceActivity, чтобы уведомить об изменениях на стенах. См. http://groups.google.com/group/android-developers/browse_thread/thread/b90ab30a5d9e0803 для очень похожего обсуждения, которое может предоставить дополнительную помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...