Большинство вопросов и ответов, которые я рассмотрел в этом топе c, либо старше 6/7 лет, либо не используют обновленную библиотеку поддержки androidx
и, следовательно, больше не действительны. Androidx
, похоже, немного по-другому управляет этими классами, и у меня возникли небольшие проблемы с обдумыванием решения.
У меня есть ListPreference
, содержащий 4 элемента, и еще один ListPreference
, содержащий по существу логическое значение (можно преобразовать его в SwitchPreference
, но это не относится к делу). Я хочу сослаться на это другое предпочтение и сообщить пользователю, что он выбрал недопустимый выбор в первом указанном предпочтении.
Я вижу два основных способа реализации этого:
- Сделать «недопустимые» параметры выделены серым цветом и недоступны для клика.
- Предотвратить завершение диалогового окна при выборе недопустимого параметра и сообщить пользователю, что ему нужно выбрать «допустимый» вариант.
Однако, похоже, я не могу легко предотвратить завершение диалога, поэтому похоже, что мой единственный вариант - расширить какой-то класс (все еще не уверен в этой структуре) для реализации необходимой функциональности.
Из моих ранних исследования, похоже, PreferenceDialogFragmentCompat
- это класс, который мне нужно будет реализовать, а также DialogPreference
. На данный момент я не знаю, смогу ли я получить любую из вышеперечисленных функций, просто расширив ListPreference
. Обычно в предложениях, которые я вижу, функция больше не находится в версии ListPreference
для androidx. Это самый близкий ответ, который я смог найти, но я еще не совсем понимаю структуру: { ссылка }
Что касается первой пули, если я смогу выяснить, как построить Просмотреть макет для диалогового окна (большинство людей предложили какой-то тип ViewAdapter
в этом случае), тогда я смогу заставить этот вариант работать.
Если у кого-то есть какие-то рекомендации или даже есть примеры код, которым они могли бы поделиться, мы будем очень признательны! В противном случае я дам вам знать, какое решение я придумал.