Cómo corregir "Evitar pasar null como la raíz de la vista" en android?

En mi aplicación para Android, creo un cuadro de diálogo como este:

private void handleEdit() { LayoutInflater inflater = getLayoutInflater(); View dialoglayout = inflater.inflate(R.layout.dialog_gallery, null); final AlertDialog d = new AlertDialog.Builder(this) .setView(dialoglayout) .setTitle(R.string.edit) .setNegativeButton(R.string.cancel, null) .create(); CheckBox mainCB = (CheckBox)dialoglayout.findViewById(R.id.main); CheckBox usedCB = (CheckBox)dialoglayout.findViewById(R.id.used); mainCB.setChecked(image.getIsMain()); usedCB.setChecked(image.getApproved()); mainCB.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (Network.isNetworkAvailable(GalleryScreen.this)) { new Async_update_image_state(GalleryScreen.this, fish, image, !image.getIsMain(), image.getApproved(), false); d.dismiss(); } else { Popup.ShowErrorMessage(GalleryScreen.this, R.string.no_internet, false); } } }); usedCB.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (Network.isNetworkAvailable(GalleryScreen.this)) { new Async_update_image_state(GalleryScreen.this, fish, image, false, !image.getApproved(), true); d.dismiss(); } else { Popup.ShowErrorMessage(GalleryScreen.this, R.string.no_internet, false); } } }); d.show(); } 

Pero obtengo una advertencia en View dialoglayout = inflater.inflate(R.layout.dialog_gallery, null); Subrayando el null .

 Avoid passing null as the view root (needed to resolve layout parameters on the inflated layout's root element) 

¿Qué significa esto y cómo puedo solucionarlo?

Gracias.

Esto funciona para mi

 View.inflate(getActivity(), R.layout.dialog, null); 

Sin advertencias ni errores.

Al inflar un diseño para su uso en un diálogo, puede pasar nulo de forma segura aquí e ignorar la advertencia.

De este enlace

El problema aquí es que AlertDialog.Builder admite una vista personalizada, pero no proporciona una implementación de setView () que tome un recurso de diseño; Por lo que debe inflar el XML manualmente. Sin embargo, debido a que el resultado entrará en el cuadro de diálogo, que no expone su vista raíz (de hecho, aún no existe), no tenemos acceso al eventual padre del diseño, por lo que no podemos usarlo para la inflación . Resulta que esto es irrelevante, porque AlertDialog borrará cualquier LayoutParams en el diseño de todos modos y los reemplazará con match_parent.

En lugar de

 inflater.inflate(R.layout.dialog_gallery, null); 

tratar

 inflater.inflate(R.layout.dialog_gallery, null, false); 

No adjuntará vista al padre que sea nulo en su caso.

Ver detalles en Android Reference

En lugar de :

 inflater.inflate(R.layout.dialog_gallery, null); 

hacer:

 inflater.inflate(R.layout.dialog_gallery, parent, false); 

El uso de una @SuppressLint annotation como sugerido por Eugen en el comentario anterior podría "suprimir" la advertencia, pero no resuelve el problema. Usar null como argumento para ViewGroup le causará problemas en el futuro.

  • AlertDialog no muestra divisores en una lista
  • "Android.view.WindowManager $ BadTokenException: No se puede agregar ventana" en buider.show ()
  • ¿Cómo puedo limitar el número de caracteres introducidos en un cuadro de diálogo de alerta? EditText
  • Cómo interactuar con el cuadro de diálogo USSD mediante programación en android
  • Actualizando la base de datos desde gridview usando un popup de alerta en android
  • ¿Por qué el cuadro de diálogo Alerta de Android es NEGRO?
  • Cómo cambiar el cuadro de diálogo de alerta divider color android
  • Recuperar el contexto de llamada en un BroadcastReceiver ()
  • AlertDialog con ArrayAdapter no mostrar lista de elementos
  • Uso de HTML en el cuadro de diálogo de alerta de Android
  • Color del texto del botón AlertDialog con la biblioteca de soporte v24.2.1
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.