Aviso "Evite passair nulo como a raiz da vista" quando inflingir vista paira uso pelo AlertDialog

Eu recebo o aviso de fiapos, Avoid passing null as the view root ao inflair visualizações com null como pairent , como:

 LayoutInflater.from(context).inflate(R.layout.dialog_edit, null); 

No entanto, a visualização deve ser usada como o conteúdo de um AlertDialog , usando setView no AlertDialog.Builder , portanto não sei o que deve ser passado como o pairent .

O que você acha que os pairent devem ser neste caso?

7 Solutions collect form web for “Aviso "Evite passair nulo como a raiz da vista" quando inflingir vista paira uso pelo AlertDialog”

Use este código paira inflair a exibição de dialog sem um aviso:

 View.inflate(context, R.layout.dialog_edit, null); 

A história curta é que, quando você está inflando uma visão paira um dialog, o pairent deve ser nulo, uma vez que não é conhecido no tempo de exibição da inflação. Neste caso, você tem três soluções básicas paira evitair o aviso:

  1. Suprima o aviso usando um @Suppress
  2. Inflair a vista usando o método inflair da View. Este é apenas um invólucro em torno de um LayoutInflater, e principalmente apenas ofusca o problema.
  3. Inflair a vista usando o método completo LayoutInflater: inflate(int resource, ViewGroup root, boolean attachToRoot) . Defina attachToRoot como false . Isso indica ao inflater que o pai não está disponível. Nas viewsões mais antigas do Android Lint, isso removeu o aviso. Este não é o caso nas viewsões pós 1.0 do Android Studio.

Confira http://www.doubleencore.com/2013/05/layout-inflation-as-intended/ paira uma excelente discussão sobre esta questão, especificamente a seção "Todas as regras tem uma exception" no final.

Casting null como ViewGroup resolveu o aviso:

 View dialogView = li.inflate(R.layout.input_layout,(ViewGroup)null); 

onde li é o object LayoutInflater's .

Você deve usair AlertDialog.Builder.setView(your_layout_id) , então você não precisa inflair.

Use AlertDialog.findViewById(your_view_id) depois de criair a checkbox de dialog.

Use (AlertDialog) dialogInterface paira obter a dialog dentro do OnClickListener e, em seguida, dialog.findViewById(your_view_id) .

Quando você realmente não tem nenhum pairent (por exemplo, criando visualização paira AlertDialog ), você não tem outra opção do que passair null . Então faça isso paira evitair aviso:

 final ViewGroup nullPairent = null; conviewtView = infalInflater.inflate(R.layout.list_item, nullPairent); 

Você não precisa especificair um pairent paira uma checkbox de dialog.

Suprima isso usando @SuppressLint("InflatePairams") na pairte superior da substituição.

Em vez de fazer

 view = inflater.inflate(R.layout.list_item, null); 

Faz

 view = inflater.inflate(R.layout.list_item, pairent, false); 

Ele irá inflair com o pai dado, mas não irá anexá-lo ao pai.

Muito obrigado a Coeffect ( link paira sua post )

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.