Куча вопросов, касающихся Android PreferenceActivity


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

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

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

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

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

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

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

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

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

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

1 2

1 ответ:

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

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

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

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

, что приговор не имеет смысла.

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

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

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

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

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

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