Метод SharedPreferences getStringSet недоступен

Очень странная проблема - я использую последнюю версию Android Development. Вот мой код:

public static final String MY_PREFS_NAME = "MyPrefsFile";

   @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

          final SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();

Set<String> savedCityFare = editor.getStringSet(whatever);

Забавно то, что ни один из методов получения не доступен для редактора. Что я делаю не так?


person zooter    schedule 08.04.2016    source источник
comment
чувак, все методы получения находятся в классе SharedPreferences   -  person Binary Baba    schedule 08.04.2016


Ответы (2)


Если вы посмотрите документацию по адресу http://developer.android.com/reference/android/content/SharedPreferences.Editor.html вы увидите, что в классе SharedPreferences.Editor определены только методы putX(). Если вы хотите использовать геттеры, вам не нужен редактор, а только объект SharedPreferences.

SharedPreferences preferences = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
Set<String> savedCityFare = preferences.getStringSet(whatever);

Я бы также предложил использовать PreferenceManager.getDefaultSharedPreferences() для получения объекта SharedPreferences.

ПРОСТО РЕДАКТИРОВАНИЕ

Чтобы добавить значение в SharedPreferences: PreferenceManager.getDefaultSharedPreferences(YOUR_CONTEXT).edit().putXXX(YOURKEY,YOURVALUE).commit();//Это напрямую сохранит значение в ваших SharedPreferences.

Если вы хотите получить значение из ваших настроек: PreferenceManager.getDefaultSharedPreferences(YOUR_CONTEXT).getXXX(YOUR_KEY);//ЭТО ВООБЩЕ вернет вам сохраненное значение.

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

person Gerardo Teruel    schedule 08.04.2016
comment
спасибо, очень полезно. Можете ли вы немного расширить свой ответ о том, как я могу использовать PreferenceManager.getDefaultSharedPRefereces()? - person zooter; 08.04.2016
comment
@zooter getDefaultSharedPreferences(Context context) — это статический метод в классе PreferenceManager; он вернет экземпляр SharedPreferences, указывающий на файл по умолчанию; поэтому используйте его, а не getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); вы можете проверить больше по ссылка - person Gerardo Teruel; 08.04.2016

Забавно то, что ни один из методов получения не доступен для редактора.

Методы получения находятся на SharedPreferences. Только методы установки находятся в SharedPreferences.Editor. Думайте о SharedPreferences.Editor как о классе в стиле строителя для создания и выполнения «транзакции» для обновления общих настроек.

person CommonsWare    schedule 08.04.2016