"Избегайте передачи null в качестве корневого представления" предупреждение при раздувании представления для использования AlertDialog
Я получаю предупреждение Линт, 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
должен быть в этом случае?
7 ответов:
используйте этот код для раздувания диалогового окна без предупреждения:
View.inflate(context, R.layout.dialog_edit, null);
короткая история заключается в том, что когда вы раздуваете представление для диалога,
parent
должен быть null, так как он не известен во время просмотра инфляции. В этом случае у вас есть три основных решения, чтобы избежать предупреждение:
- подавить предупреждение с помощью @Suppress
- раздувать представление с помощью представления надуть способ. Это просто обертка вокруг LayoutInflater, и в основном просто запутывает проблему.
раздувать посмотреть используя LayoutInflater это метод:в старых версиях Android Lint это удалило предупреждение. Это уже не так в версиях post 1.0 для Android Studio.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
это
вы должны использовать
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);
do
view = inflater.inflate(R.layout.list_item, parent, false);
он будет раздувать его с данным родителем, но не будет прикреплять его к родителю.
большое спасибо Coeffect (ссылка на его пост)