Ответ 1
Используйте этот код для раздувания диалогового окна без предупреждения:
View.inflate(context, R.layout.dialog_edit, null);
Я получаю предупреждение lint, Avoid passing null as the view root
при раздувании представлений с null
как parent
, например:
LayoutInflater.from(context).inflate(R.layout.dialog_edit, null);
Однако представление должно использоваться как содержимое AlertDialog
, используя setView
on AlertDialog.Builder
, поэтому я не знаю, что должно быть передано как parent
.
Как вы думаете, в этом случае parent
?
Используйте этот код для раздувания диалогового окна без предупреждения:
View.inflate(context, R.layout.dialog_edit, null);
Короче говоря, когда вы раздуваете представление для диалога, parent
должно быть нулевым, так как оно неизвестно в поле "Просмотр времени инфляции". В этом случае у вас есть три основных решения, чтобы избежать предупреждения:
inflate(int resource, ViewGroup root, boolean attachToRoot)
. Установите attachToRoot
в false
. Это говорит о том, что родительский пакет недоступен.Ознакомьтесь с http://www.doubleencore.com/2013/05/layout-inflation-as-intended/, чтобы обсудить эту проблему, в частности раздел "Каждое правило имеет исключение" в конце.
Отбрасывание null, когда ViewGroup разрешило предупреждение:
View dialogView = li.inflate(R.layout.input_layout,(ViewGroup)null);
где li
- объект LayoutInflater's
.
Вы должны использовать AlertDialog.Builder.setView(your_layout_id)
, поэтому вам не нужно раздувать его.
Используйте AlertDialog.findViewById(your_view_id)
после создания диалогового окна.
Используйте (AlertDialog) dialogInterface
, чтобы получить dialog
внутри OnClickListener
, а затем dialog.findViewById(your_view_id)
.
Если у вас действительно нет parent
(например, создание представления для AlertDialog
), у вас нет другого выбора, кроме передачи null
. Поэтому сделайте это, чтобы избежать предупреждения:
final ViewGroup nullParent = null;
convertView = infalInflater.inflate(R.layout.list_item, nullParent);
Вам не нужно указывать parent
для диалога.
Подавить это, используя @SuppressLint("InflateParams")
в верхней части переопределения.
Вместо того, чтобы делать
view = inflater.inflate(R.layout.list_item, null);
делать
view = inflater.inflate(R.layout.list_item, parent, false);
Он раздует его с данным родителем, но не привяжет его к родительскому.
Большое спасибо Coeffect (ссылка на его сообщение)