У Документах Android на AlertDialog він подає таку інструкцію та приклад для встановлення спеціального перегляду в AlertDialog:
Якщо ви хочете відобразити більш складний вигляд, знайдіть FrameLayout під назвою "body" і додайте до нього свій погляд:
FrameLayout fl = (FrameLayout) findViewById(R.id.body);
fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT));
По-перше, досить очевидно, що add()
це друкарська помилка addView()
.
Мене бентежить перший рядок із використанням R.id.body. Здається, що це елемент тіла AlertDialog ... але я не можу просто ввести, що в моєму коді b / c він дає помилку компіляції. Де Р.id.body визначається чи призначається чи що завгодно?
Ось мій код. Я намагався використовувати setView(findViewById(R.layout.whatever)
на будівельнику, але це не вийшло. Я припускаю, тому що я не роздував її вручну?
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))
до будівельника. Кредит Серджіо Віудесса нижче.