Help us understand the problem. What is going on with this article?

Dialog内のViewを関連付ける

More than 3 years have 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();
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away