2012-06-29 2 views
3

Я хочу хранить и извлекать данные, доступные для всех действий в моем приложении, используя SharedPreferences. Это возможно? До сих пор я делал это так, чтобы данные хранились для определенного вида деятельности.Хранение данных в SharedPreferences, доступных для всех видов деятельности

+0

Вы также может использовать файл настроек по умолчанию, см. [this] (http: // stackove rflow.com/questions/2614719/how-do-i-get-the-sharedpreferences-from-a-preferenceactivity-in-android) – dmon

ответ

4

Да. SharePreferences делают именно это. В любой деятельности, вы можете это:

SharedPreferences prefs = getSharedPreferences(ApplicationConstants.PREFERENCES, Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.putString(name, value); 
editor.commit(); 

А затем извлекать значения в других activty делает это:

mPrefs.getString(name, ""); 

Это документация: http://developer.android.com/reference/android/content/SharedPreferences.html

И это хороший пример начинаются с:

http://myandroidsolutions.blogspot.it/2012/03/android-preferenceactivity.html

+0

Действительно полезно thnx :) –

+0

Это кажется полезным, но это актуально? Интересно, что такое «ApplicationConstants», и я не могу найти никакой информации об этом в документации. Кроме того, хороший пример в этом блоге ушел. Это имеет смысл, хотя, я понимаю, что ответ был дан 5 лет назад. – Zerato

0

Да, в этом вся цель.

Вот как вы должны написать к нему через Editor

final SharedPreferences shp   = ctx.getSharedPreferences(ctx.getString(R.string.app_name), Context.MODE_PRIVATE); 
    final SharedPreferences.Editor ed = shp.edit(); 
    ed.putString("var1", "var1"); 
    ed.putString("var2", "var2"); 

И загрузить его:

shp.getString("var1", "defvalue"); 
+1

ОК, это называется getSharedPreferences. Я использовал только getPreferences. Благодаря! – AndroidDev

0

Если вы хотите получить доступ к значениям во всех делах, я думаю, что может быть лучше хранение в специальном классе приложений, а затем в деятельности вы можете:

((CustomApplication)getApplication()).getStoredValue() 

Общие предпочтения хранятся в файлах, и этот доступ к файлам происходит медленнее.

0

У меня есть лучшая версия. Как иногда, когда вы пытаетесь сделать getSharedPreferences, вы можете получить сообщение об ошибке, поскольку он не может быть найден. Вот как я храню ценности в своих проектах на Android.

Добавить

SharedPreferences sharedPreferences=this.getSharedPreferences("packagename", Context.MODE_PRIVATE); 

sharedPreferences.edit().putString("username", "specify name here").apply(); 

Имя пакета может быть скопирован из верхней части бывшей деятельности: com.example.name.projectname

Получить

String username = sharedPreferences.getString("username",""); 
Смежные вопросы