Во-первых, дело не в ConstraintLayout
, а в том, как вы реализуете Dialog
. Это предложение и согласно Dialog Documentation :
Класс Dialog является базовым классом для диалогов, но вам следует избегать создания экземпляра Dialog напрямую. Вместо этого используйте один из следующих подклассов:
AlertDialog
Диалог, в котором может отображаться заголовок, до трех кнопок, список выбираемых элементов или пользовательский макет. [1115 ]blockquote>
DatePickerDialog or TimePickerDialog
Диалог с предопределенным пользовательским интерфейсом, который позволяет пользователю выбирать дату или время.Таким образом, в основном вы будете использовать
setView
api:@Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity()); // Setting my layout here builder.setView(R.layout.my_layout); builder.setPositiveButton(/* My Methods */) .setNegativeButton(/* My Methods */); return builder.create(); }
Прочтите об этом в Создание документации пользовательского макета . Если вы хотите больше настроек, создайте собственную тему в
values
>styles.xml
, которую можно использовать во всем приложении, или просто установив ее вместе со сборщиком, например:new AlertDialog.Builder(requireActivity(), R.style.My_Alert_Dialog_Theme);
Ад пути к классу является печальным последствием динамического подключения вида, выполненного Java.
Ваша программа не является фиксированным объектом, а скорее точным набором классов, загруженных JVM в конкретном экземпляре.
Очень возможно быть в ситуациях, где та же командная строка на различных платформах или даже на том же привела бы к совершенно другим результатам из-за правил разрешения.
Могли быть различия в стандартных (очень распространенных) библиотеках. Библиотеки могли быть скрыты друг другом (более старая версия может даже использоваться вместо более новой). Структура каталогов могла смешать разрешение. Другая версия того же класса может появиться в нескольких библиотеках, и первый, с которым встречаются, будет использоваться, и т.д. Так как Java, спецификацией, использует сначала встреченную политику, неизвестные зависимости от упорядочивания могут привести к проблемам. Конечно, так как это - командная строка, и это - часть спецификации, нет никаких реальных предупреждений.
Это - очень все еще проблема. Например, на Mac OS ужасная поддержка со стороны Apple означает, что Вы, машина заканчивается с несколькими JVMs и несколькими JREs, и Вы никогда не можете легко poart вещи с места на место. Если у Вас есть несколько библиотек, которые были скомпилированы против определенных но различных версий других библиотек, у Вас могли быть проблемы и т.д.
Однако эта проблема не свойственна от Java. Я помню свою долю ситуаций с адом DLL при программировании окон в 90-х. Любая ситуация, где необходимо рассчитывать на что-то в файловой системе для сборки программы вместо того, чтобы иметь единственный четко определенный исполняемый файл, является проблемой.
Однако преимущества этой модели являются все еще большими, таким образом, я готов терпеть этот ад. Существуют также шаги в правильном направлении на стороне Sun. Например, Java6 позволяет Вам просто указывать каталог с банками, а не иметь для перечисления их.
BTW: Пути к классам являются также проблемой при использовании среды, которая использует classloader не по умолчанию. Например, у меня было много проблем, которые любят рабочие вещи, в спящем режиме или Систематизатор под Eclipse, потому что classloaders были несовместимыми.
Classpath/jar-hell имеет несколько аварийных люков, если они имеют смысл для Вашего проекта:
Я думаю, что "ад пути к классу" относится ко времени, когда путь к классу приложения Java мог только быть установлен при помощи переменной среды ПУТИ К КЛАССУ. Ведомый ко многим приложениям, требующим изменений в глобальной конфигурации системы (отличающийся для каждой ОС), конфликты версий между приложениями и общий беспорядок.
Существует партия хорошего материала здесь http://mindprod.com/jgloss/classpath.html и http://java.sun.com/javase/6/docs/technotes/tools/windows/classpath.html
У меня только были проблемы с путями к классам, когда я не устанавливаю, самостоятельно использует - CP. Попытка выяснить, как Ваше стороннее программное обеспечение устанавливает их пути к классам, может время от времени быть болью.