Куча вопросов, касающихся Android PreferenceActivity - PullRequest
2 голосов
/ 09 мая 2011

Я использую PreferenceActivity, чтобы установить некоторые предпочтения о другом BroadcastReciever, который у меня есть.

Хотя создание каркаса с настройками GUI очень простое с XML-файлом, я не могу найти руки иноги вокруг того, как на самом деле сделать что-то с этими предпочтениями.особенно:

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

  2. Какя действую в своем PreferenceActivity при изменении предпочтений?я думаю, мне не нужно регистрировать PreferenceActivity в качестве прослушивателя предпочтений, поэтому должен быть более простой способ.

  3. Как изменить пользовательский интерфейс PreferenceActivity, соответствующийизменения в настройках?например, установить для атрибута «Сводка» предпочтения значение, выбранное пользователем?

  4. Как включить или отключить некоторые предпочтения, которые зависят от другого предпочтения (например, CheckBoxPreference)?таким образом, пользователь мог редактировать эти настройки, только если он сначала включил эту функцию.

Я просмотрел всю документацию, но нет примера использования PreferenceActivity за исключением простого добавления настроек.из XML.

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

Пожалуйста, попробуйте ответить на любоймоего вопроса.

Кстати: я разрабатываю для Android 1.6, поэтому все новые PreferenceFragment не могут быть использованы.

1 Ответ

1 голос
/ 09 мая 2011

Как зарегистрировать мой BroadcastReciever для прослушивания изменений в моих настройках?

Если в манифесте зарегистрировано BroadcastReceiver, изменения в ваших настройках не прослушиваются.потому что BroadcastReceiver будет только в течение миллисекунд.Просто прочитайте последние значения в течение onReceive().

Если BroadcastReceiver зарегистрирован другим компонентом, вызывающим registerReceiver(), этот компонент может зарегистрировать OnSharedPreferenceChangeListener с SharedPreferences, полученным через PreferenceManager и getDefaultSharedPreferences().

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

Это предложение не имеет смысла.

Как мне действовать в моем PreferenceActivity при изменении настроек?

Зарегистрировать OnSharedPreferenceChangeListenerс SharedPreferences, полученным через PreferenceManager и getDefaultSharedPreferences().

Как изменить пользовательский интерфейс PreferenceActivity в соответствии с изменениями в предпочтениях?

Как правило, вы не делаете.Вы можете зарегистрировать OnSharedPreferenceChangeListener с SharedPreferences, полученным через PreferenceManager и getDefaultSharedPreferences().Оттуда вы можете получить Preference из вашего PreferenceActivity через findPreference() и настроить его в соответствии с требованиями.

Как включить или отключить некоторые предпочтения, которые зависят от другого предпочтения (например, CheckBoxPreference)?таким образом, пользователь может редактировать эти настройки, только если он сначала включил эту функцию.

При необходимости добавьте android:dependency в XML-файл настроек.

...