Расположение предпочтений для данных без предпочтений

1

У меня есть активность, которая используется для редактирования некоторого объекта. В настоящее время его макет как простая форма, но я бы хотел, чтобы он был более похож на активность предпочтений. Я хотел бы использовать те же макеты, которые доступны там (например, CheckBoxPreference), но сохранить изменения в моем объекте, а не в настройках. Есть ли простой способ иметь активность, которая выглядит как предпочтения, но не использует предпочтения на задней панели?

Теги:

2 ответа

3
Лучший ответ

Вы можете достичь этого, используя следующие 2 шага:

  1. Установите предпочтение не постоянным с помощью android:persistent="false" в xml или через setPersistent(false) в коде. Таким образом, параметры SharedPreferences умолчанию не будут изменены, когда пользователь изменяет значения в пользовательском интерфейсе предпочтений.

  2. Изменение значения OnPreferenceChangeListener через прослушиватель OnPreferenceChangeListener зарегистрированный с помощью setOnPreferenceClickListener. Это позволит вам перехватывать изменения и обрабатывать их так, как вам нужно.

  • 0
    Благодарю. Второй вариант имеет смысл для меня, так как у меня есть другая страница глобальных настроек, которая является постоянной и должна быть такой
  • 0
    Привет, извините, что поднял годичный комментарий, но это вообще хороший способ кодирования или я должен кодировать формы с нуля? Я также хотел бы получить идею простого использования форм настроек, которые автоматически соответствуют теме ОС, а не создания форм + тем с нуля вручную. спасибо за любую помощь
0

Да, вы можете предоставить свою собственную реализацию SharedPreferences и сохранить свои данные где-то, что не является предпочтительным, но при этом использовать один и тот же интерфейс и определение XML. См. Этот вопрос и эту ссылку. Образец ссылки довольно сложный, поскольку он записывает данные обратно в базу данных напрямую, но очень легко заменить простой Map а затем извлечь данные с карты в ваш объект. Или, если вы хотите, чтобы данные были сохранены немедленно, просто напишите прямо в свой объект.

  • 0
    Спасибо! выглядит как то, что мне нужно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню