Обновить настройки предпочтений после того, как я очистил и зафиксировал изменения - PullRequest
0 голосов
/ 28 июня 2011

У меня есть Android PreferencesAcitivty, который позволяет пользователям сбросить свои предпочтения к значениям по умолчанию. Приведенный ниже код работает нормально, но интерфейс Preferences не обновляется после того, как я вызываю editor.clear () и editor.commit (). Как я могу достичь этого без перезагрузки действия или вызова onCreate (null)?

public class Preferences extends PreferenceActivity {

    /* Called when someone specifies to view the options menu */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Set
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.settings, menu);

        // Return
        return true;
    }

    /* Handle options menu selections */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        // Handle item selection
        switch (item.getItemId()) {

            case R.id.itemReset:
                // Reset

                // Build
                DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        switch (which){
                        case DialogInterface.BUTTON_POSITIVE:
                            //Yes button clicked
                            SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                            SharedPreferences.Editor editor = preferences.edit();
                            editor.clear();
                            editor.commit();
                            **// TODO: Refresh preferences**
                            break;

                        case DialogInterface.BUTTON_NEGATIVE:
                            //No button clicked
                            break;
                        }
                    }
                };

                // Display
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setMessage("Are you sure you want to reset your settings back to their default options?").setPositiveButton("Yes", dialogClickListener).setNegativeButton("No", dialogClickListener).show();

                // Return
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }

    }

    /* Called when the activity is first created. */
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        // Super
        super.onCreate(savedInstanceState);

        // Call
        addPreferencesFromResource(R.xml.preferences);
    }
}

1 Ответ

1 голос
/ 28 июня 2011

Вы должны посмотреть на OnSharedPreferenceChangeListener .

Это даст вам элементы, которые были изменены, следовательно, вам нужно обновить все из них, но обновить измененные.

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