Android

【Android】文字入力可能なアラートダイアログを作る方法【AlertDialog】

android_dialog

AlertDialog使ってますか?
ユーザーに何かしらの情報を伝えるのに便利ですよね。

私もそれなりに普通に使っていたのですが、そういえばAlertDialogに動的に文字を入力するにはどうすればいいんだろう?と思うことがありました。

気になったので調べてみたのですが、思っていた以上に簡単に実装できることがわかったので、忘れないうちに記事にしようと思います。

AlertDialogに文字入力欄を作る方法

イメージとしては、AlertDialogにEditTextをセットする感じです。
早速コードを見ていきましょう。
以下のようになります。

final EditText editText = new EditText(this);
editText.setHint("編集できるよ!");
new AlertDialog.Builder(this)
        .setTitle("タイトル")
        .setMessage("メッセージ")
        .setView(editText)
        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                 // お好きな処理をどうぞ
            }
        })
        .show();

このようにすると、以下の画像のようなダイアログが生成されます。

AlertDialogの画像

AlertDialogに文字入力欄が設定されていますね。
これで、ユーザーが自由に文字列を入力できるようになりました。

AlertDialogに入力した内容をTextViewに反映させる方法

入力した内容をTextViewなどに反映させたい場合は、OnClickListener()の中を以下のようにすると実現できますよ。

new AlertDialog.Builder(this)
        .setTitle("タイトル")
        .setMessage("メッセージ")
        .setView(editText)
        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
           // TextViewにセットしてあげる
                TextView textView = (TextView) findViewById(R.id.tView);
                textView.setText(editText.getText());
            }
        })
        .show();

例えば、AlertDialogに「Hello World」と入力した場合は、以下のようにViewに反映されます。

AlertDialog入力結果

参考:AlertDialog with EditText, open soft keyboard automatically with focus on EditText doesn’t work

終わりに

今回はAlertDialogに文字列を入力する方法についてご紹介しました。
ほかにも文字列の入力用フラグなど色々とあるようなので、一度公式ドキュメントを見ておくと参考になると思います。
公式ドキュメントはこちらです。

今回はここまでです。それでは。