Куча вопросов, касающихся Android PreferenceActivity
Я использую PreferenceActivity
, чтобы установить некоторые предпочтения относительно другого BroadcastReciever
, который у меня есть.
В то время как создание скелета GUI предпочтений очень просто с помощью XML-файла, я не могу найти свои руки и ноги вокруг того, как на самом деле сделать что-то с этими предпочтениями. особенно:
-
Как я могу зарегистрировать свой
BroadcastReciever
, чтобы слушать изменения в моих предпочтениях? Это выглядит так, что контекст приемника трансляции не совпадает с активностью, поэтому я не регистрируюсь справаSharedPreferences
потому что я не перехватываю эти изменения. -
Как мне действовать в моем
PreferenceActivity
случае изменения предпочтений? я думаю, что мне не нужно регистрироватьPreferenceActivity
в качестве слушателя предпочтений, поэтому должен быть более простой способ. -
Как изменить пользовательский интерфейс
PreferenceActivity
, соответствующий изменениям в настройках? например, установите атрибут" Summary " предпочтения в значение, которое выбрал пользователь? -
Как включить или отключить некоторые настройки это зависит от другого предпочтения (например,
CheckBoxPreference
)? таким образом, пользователь может редактировать эти настройки, только если он включил эту функцию первым.
Я просмотрел всю документацию, но нет никакого примера использования PreferenceActivity
, кроме простого добавления предпочтений из XML.
, пожалуйста, попытайтесь ответить на любой мой вопрос.
Кстати:
Я развиваюсь для Android 1.6 так что все новые PreferenceFragment
не могут быть использованы.
1 ответ:
Как я могу зарегистрировать свой BroadcastReciever, чтобы слушать изменения в моих предпочтениях?
Если
BroadcastReceiver
зарегистрировано в манифесте, вы не будете слушать изменения в ваших предпочтениях, потому чтоBroadcastReceiver
будет только в течение миллисекунд. Просто прочитайте последние значения в duringonReceive()
.Если
BroadcastReceiver
зарегистрирован каким-либо другим компонентом, вызывающимregisterReceiver()
, Этот компонент может зарегистрироватьOnSharedPreferenceChangeListener
с помощьюSharedPreferences
, полученного черезPreferenceManager
иgetDefaultSharedPreferences()
.Его похоже, что контекст приемника широковещания не совпадает с активностью, поэтому я не регистрирую правильные SharedPreferences, потому что я не перехватываю эти изменения.
, что приговор не имеет смысла.
Как я действую в своей предпочтительной активности при изменении предпочтений?
Зарегистрируйте
OnSharedPreferenceChangeListener
с помощьюSharedPreferences
, полученных черезPreferenceManager
иgetDefaultSharedPreferences()
.Вы можете зарегистрироватьКак изменить пользовательский интерфейс PreferenceActivity, соответствующий изменения в предпочтениях?
OnSharedPreferenceChangeListener
с помощьюSharedPreferences
, полученного черезPreferenceManager
иgetDefaultSharedPreferences()
. Оттуда вы можете получитьPreference
от вашегоPreferenceActivity
черезfindPreference()
и приспособиться к нему.Как включить или отключить некоторые параметры, зависящие от других параметров (например, CheckBoxPreference)? таким образом, пользователь может редактировать эти настройки, только если он включил эту функцию первым.
Добавьте
android:dependency
в свой XML-файл предпочтений по мере необходимости.