AlertDialogのAndroidドキュメントでは、AlertDialogでカスタムビューを設定するための次の手順と例が示されています。
より複雑なビューを表示したい場合は、「body」というFrameLayoutを検索して、ビューを追加します。
FrameLayout fl = (FrameLayout) findViewById(R.id.body);
fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT));
まず、それadd()
がタイプミスであり、であることを意図していることはかなり明白ですaddView()
。
R.id.bodyを使用する最初の行で混乱しています。それはAlertDialogのbody要素のようです...しかし、コードb / cにそれを入力するだけではコンパイルエラーが発生します。R.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))
ビルダーに追加します。下記のセルジオヴィウデスの功績です。