En los documentos de Android en AlertDialog , proporciona la siguiente instrucción y ejemplo para configurar una vista personalizada en un AlertDialog:
Si desea mostrar una vista más compleja, busque el FrameLayout llamado "cuerpo" y agregue su vista:
FrameLayout fl = (FrameLayout) findViewById(R.id.body);
fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT));
En primer lugar, es bastante obvio que add()
es un error tipográfico y está destinado a serlo addView()
.
Estoy confundido por la primera línea que usa R.id.body. Parece que es el elemento del cuerpo del AlertDialog ... pero no puedo simplemente ingresar eso en mi código porque da un error de compilación. ¿Dónde se define o asigna R.id.body o lo que sea?
Aquí está mi código. Traté de usar setView(findViewById(R.layout.whatever)
en el constructor pero no funcionó. ¿Estoy asumiendo porque no lo inflé manualmente?
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title")
.setCancelable(false)
.setPositiveButton("Go", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
EditText textBox = (EditText) findViewById(R.id.textbox);
doStuff();
}
});
FrameLayout f1 = (FrameLayout)findViewById(R.id.body /*CURRENTLY an ERROR*/);
f1.addView(findViewById(R.layout.dialog_view));
AlertDialog alert = builder.create();
alert.show();
.setView(getLayoutInflater().inflate(R.layout.dialog_view, null))
al constructor. Crédito a Sergio Viudes, a continuación.