Как создать диалог пользовательских настроек android (ListPreference) - PullRequest
0 голосов
/ 02 августа 2020

Большинство вопросов и ответов, которые я рассмотрел в этом топе c, либо старше 6/7 лет, либо не используют обновленную библиотеку поддержки androidx и, следовательно, больше не действительны. Androidx, похоже, немного по-другому управляет этими классами, и у меня возникли небольшие проблемы с обдумыванием решения.

У меня есть ListPreference, содержащий 4 элемента, и еще один ListPreference, содержащий по существу логическое значение (можно преобразовать его в SwitchPreference, но это не относится к делу). Я хочу сослаться на это другое предпочтение и сообщить пользователю, что он выбрал недопустимый выбор в первом указанном предпочтении.

Я вижу два основных способа реализации этого:

  • Сделать «недопустимые» параметры выделены серым цветом и недоступны для клика.
  • Предотвратить завершение диалогового окна при выборе недопустимого параметра и сообщить пользователю, что ему нужно выбрать «допустимый» вариант.

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

Из моих ранних исследования, похоже, PreferenceDialogFragmentCompat - это класс, который мне нужно будет реализовать, а также DialogPreference. На данный момент я не знаю, смогу ли я получить любую из вышеперечисленных функций, просто расширив ListPreference. Обычно в предложениях, которые я вижу, функция больше не находится в версии ListPreference для androidx. Это самый близкий ответ, который я смог найти, но я еще не совсем понимаю структуру: { ссылка }

Что касается первой пули, если я смогу выяснить, как построить Просмотреть макет для диалогового окна (большинство людей предложили какой-то тип ViewAdapter в этом случае), тогда я смогу заставить этот вариант работать.

Если у кого-то есть какие-то рекомендации или даже есть примеры код, которым они могли бы поделиться, мы будем очень признательны! В противном случае я дам вам знать, какое решение я придумал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...