In den Android-Dokumenten zu AlertDialog finden Sie die folgenden Anweisungen und Beispiele zum Festlegen einer benutzerdefinierten Ansicht in einem AlertDialog:
Wenn Sie eine komplexere Ansicht anzeigen möchten, rufen Sie das FrameLayout mit dem Namen "body" auf und fügen Sie Ihre Ansicht hinzu:
FrameLayout fl = (FrameLayout) findViewById(R.id.body);
fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT));
Zunächst einmal ist es ziemlich offensichtlich, dass dies add()
ein Tippfehler ist und sein soll addView()
.
Ich bin durch die erste Zeile mit R.id.body verwirrt. Es scheint, dass es das Body-Element des AlertDialogs ist ... aber ich kann nicht einfach eingeben, dass es in meinem Code b / c einen Kompilierungsfehler gibt. Wo wird R.id.body definiert oder zugewiesen oder was auch immer?
Hier ist mein Code. Ich habe versucht, setView(findViewById(R.layout.whatever)
den Builder zu verwenden, aber es hat nicht funktioniert. Ich nehme an, weil ich es nicht manuell aufgeblasen habe?
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))
Zum Builder hinzufügen . Dank an Sergio Viudes, unten.