"Избегайте передачи 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 (ссылка на его пост)