Первый дескриптор

Первый дескриптор

Поскольку сейчас в нашем приложении имеются две активности, нужны два дескриптора активностей в файле AndroidManifest.xml. Первый дескриптор определяет стандартную активность категории LAUNCHER. Второй дескриптор предназначен для активности PreferenceActivity, поэтому мы устанавливаем имя действия согласно соглашению для намерений, а категорию — в PREFERENCE, как показано в е 13.4. Вряд ли нужно, чтобы активность PreferenceActivity была показана на странице Android со всеми другими приложениями, и поэтому для нее не стоит указывать категорию LAUNCHER. Если понадобится добавить другие экраны для работы с настройками, в них надо будет внести аналогичные изменения.

В коде был продемонстрирован один из способов чтения значения по умолчанию для настройки. В Android имеется и другой способ, несколько более элегантный. В методе onCreate() можно записать следующий код:

PreferenceManager.setDefaultValues(this, R.xml.flightoptions, false);

Тогда в методе setOptionText() чтение значения параметра можно выполнить так:

String option = prefs.getString(

resources.getString(R.string.selected flight sort option), null);

В первом вызове используется файл flightoptions.xml, чтобы найти значения по умолчанию и сгенерировать на их основе XML-файл настроек. При наличии в памяти экземпляра объекта SharedPreferences обновляется и он. После этого второй вызов найдет значение для selected_flight_sort_option, поскольку значения по умолчанию уже загружены.

Если после первого выполнения этого кода открыть папку shared_prefs, то там уже можно будет увидеть XML-файл настроек, даже если экран настроек еще не вызывался. Там же будет находиться и другой файл — _has_set_default_values.xml. Он означает, что XML-файл настроек уже создан и содержит значения по умолчанию. Третий аргумент вызова setDefaultValues() (равный false), означает, что нужно лишь установить значения по умолчанию из XML-файла настроек, если это еще не было сделано. Если вместо этого указать true, то содержимое XML-файла в любом случае заменяется значениями по умолчанию. Android запоминает такую информацию с помощью этого нового XML-файла. Если пользователь выбрал новые значения настроек, и в качестве третьего аргумента указано false, то при следующем выполнении кода пользовательские настройки не будут перезаписаны. Теперь уже нет необходимости предоставлять значение по умолчанию в вызове метода getString() , т.к. мы всегда должны получать значение из XML-файла настроек.

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

SharedPreferences prefs =

getPreferenceManager().getDefaultSharedPreferences(this);

Мы показали, как использовать представление ListPreference, а теперь рассмотрим ряд других элементов пользовательского интерфейса из инфраструктуры настроек Android — речь пойдет о представлениях CheckBoxPreference и EditTextPreference.

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс

Добавить комментарий