Есть ли способ избежать вызовов context.getSharedPreferences (KEY, defValue) при редактировании нескольких настроек? - PullRequest
1 голос
/ 29 ноября 2011

В моем приложении для Android у меня есть

    SharedPreferences usernamePref = context.getSharedPreferences(USERNAME_PREF, context.MODE_PRIVATE);
    String username = usernamePref.getString(USERNAME_PREF, ERROR);

    SharedPreferences emailPref = context.getSharedPreferences(EMAIL_PREF, context.MODE_PRIVATE);
    String email = emailPref.getString(EMAIL_PREF, ERROR);

    SharedPreferences passwordPref = context.getSharedPreferences(PASSWORD_PREF, context.MODE_PRIVATE);
    String password = usernamePref.getString(PASSWORD_PREF, ERROR);

Причина, по которой меня это смущает, заключается в том, что ключ используется дважды, что кажется избыточным.Поэтому мне интересно, возможно ли просто получить все предпочтения от одного SharedPreferences объекта?

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

Обычно я так делаю:

PreferenceManger prefManager = PreferenceManager.getDefaultSharedPreferences(context);
String username = prefManager.getString(USERNAME_PREF);
String email = prefManager.getString(EMAIL_PREF);
String password = prefManager.getString(PASSWORD_PREF);

Примечание: Вы захотите редактировать отдельные SharedPreferences для вашего приложения, а не отдельные, как у вас сейчас.Чтобы отредактировать его таким образом, сделайте следующее:

PreferenceManger prefManager = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefManager.edit();
editor.putString(USERNAME_PREF, usernameString);
editor.putString(EMAIL_PREF, emailString);
editor.putString(PASSWORD_PREF, passwordString);
editor.commit();
0 голосов
/ 29 ноября 2011

Как вы храните настройки? Было бы целесообразно использовать один SharedPreferences.

Просто используйте редактор на один SharedPreferences и используйте putString с вашими разными ключами.

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