Posted at

Dialog内のViewを関連付ける

More than 1 year has passed since last update.


はじめに

Dialog内のViewを関連付けて通常のView同様に使いたいときに毎回調べるの面倒なのでメモします。

やってることはDialog用のLayoutをViewに読み込んで表示させてるだけです。


Layoutの読み込み

LayoutInflaterを使って読み込みます

//Dialogレイアウト取得用のView

View inputView;

//Dialog用レイアウトの読み込み
LayoutInflater factory = LayoutInflater.from(this);
inputView = factory.inflate(R.layout.layout_dialog, null);


関連付け

findViewByIdの前にさっきLayoutを読み込んだViewをつけてやるだけです。

//関連付け

dialogText=(TextView)inputView.findViewById(R.id.dialog_text);


Dialogに反映

.setViewで表示するViewをセットします。

//Dialog生成

alertDlg = new AlertDialog.Builder(TagEditActivity.this)
.setView(inputView)
.setPositiveButton(
"OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// OK ボタンクリック処理
}
})
.create();


おしまい!

これだけで関連付け終わりなので、どこからでもViewの中身を操作できます。

煮るなり焼くなり好きにしてください。


サンプルコード

//Dialogレイアウト取得用のView

View inputView;
//Dialog内のTextView
TextView dialogText;
//Dialog
AlertDialog alertDlg;

//Dialog用レイアウトの読み込み
LayoutInflater factory = LayoutInflater.from(this);
inputView = factory.inflate(R.layout.layout_dialog, null);
//関連付け
dialogText=(TextView)inputView.findViewById(R.id.dialog_text);
//Dialog生成
alertDlg = new AlertDialog.Builder(TagEditActivity.this)
.setView(inputView)
.setPositiveButton(
"OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// OK ボタンクリック処理
}
})
.create();