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
.
- ¿Cómo comprobar si AlertDialog.builder está mostrando y cancelando si está mostrando?
- ¿Cómo puede un WebView heredar colores del tema actual de Android?
- Aplicar imagen de fondo a AlertDilog
- Cómo descartar AlertDialog en android
- ¿Cómo puedo añadir un tercer botón a un cuadro de diálogo de alerta de Android?
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.
- Copiar texto de Android AlertDialog?
- AlertDialog dentro de alertdialog android
- Diseño personalizado para el elemento Spinner
- Obtener 'No se puede resolver el método' addOnCompletionListener () '...' al intentar colocar algún código dentro del método onClick () de builder.setPositiveButton
- ¿Cómo aplicar el tema ligero para la actividad y mantener el tema oscuro para los diálogos al mismo tiempo?
- ¿Cómo se muestra un CalendarView en un AlertDialog?
- Cambiar el tamaño de EditText (cualquier vista) mostrado en alertBox?
- ¿Puedo cerrar un cuadro de diálogo de alerta en la lista?
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.
- Android WebView use setWideViewPort, deshabilitar doble toque zoom pero mantener pellizcar zoom?
- La fuente de Android SDK de Android no se compilará con Eclipse Indigo