aswww log

Webエンジニアの技術録。Linuxとかウェブ制作・ソフト開発とか

AlertDialogでネストしたい時

アプリでダイアログ表示した後、ユーザーが特定のボタン(NeutralButton)を選択して押した時に更に新しいダイアログを表示するようにした。
ここではまったのは新しいダイアログの方のnew AlertDialog.Builder(this)の引数。Contextを指定してほしいと言われたので

new AlertDialog.Builder(this)

とか

new AlertDialog.Builder(getApplicationContext())

とか色々試したけどダメ。結果、どこかのstackOverFlowで見たMainActivity.thisを指定してあげたら動いたよ。
thisってインスタンスじゃないの?クラス名.で呼び出せるのってstaticなクラスだけじゃないんだっけか?

private void showAlert(){
    new AlertDialog.Builder(this)
        .setTitle("title")
        .setMessage("message")
        setNeutralButton("NeutralButton"), new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
				new AlertDialog.Builder(MainActivity.this)
				   ︙
            }
        })
        .create().show();
}