Страница 1 из 1

Настройки приложения

Добавлено: 22 мар 2012, 10:35
andev
Как лучше всего организовать хранение и работу с настройками приложения?
У меня там пара string и несколько булевых значений. Первоначально думал в Preferences, но, на сколько я понял, для каждого данные сохраненные в нем из одного активити не будут видны в другом?
Остается SQLite, но, возможно, есть более удобный способ?

Re: Настройки приложения

Добавлено: 22 мар 2012, 16:53
KamiSempai
Есть метод getSharedPreferences(String name, int mode). Он аналогичен getPreferences, только первым параметром передается имя файла с настройками(без расширения).
На самом деле вызов getPreferences равносилен вызову getSharedPreferences, где name равно имени Активити.

Re: Настройки приложения

Добавлено: 22 мар 2012, 18:47
andev
То есть, сохраненные данные с одного активити можно будет считывать в любом другом в рамках приложения?

Re: Настройки приложения

Добавлено: 23 мар 2012, 12:01
KamiSempai
Именно так.

PS: Для информации: Настройки хранятся в папке "/dbdata/databases/<Имя пакета программы>/shared_prefs/" с расширением xml.
После удаления программы, настройки ни куда не пропадают, и если в них записанно, что то, что мешает запуску программы или, как уменя один раз было, не дает перезаписать настройки, придется в ручную удалять эту папку (нужны рут права).

Re: Настройки приложения

Добавлено: 23 мар 2012, 12:15
andev
Спасибо, сейчас попробую подключить к проекту

Re: Настройки приложения

Добавлено: 29 мар 2012, 03:10
andev
А как лучше всего организовать работу с SharedPrefernces из класса, который не наследует Activity?

Re: Настройки приложения

Добавлено: 29 мар 2012, 17:27
KamiSempai
Это можно сделать через Context, который передается в конструктор класса.

Код: Выделить всё

MyClass MyObject = new MyClass(this);
Здесь this - это сама активити, в которой создается объект.
Вот конструктор:

Код: Выделить всё

public MyClass(Context context) {
	SharedPreferences Pref = context.getSharedPreferences(PREF_FILE, Context.MODE_WORLD_READABLE);
	// Дальше, думаю, понятно...
}