AlertDialogでボタンを押した時にダイアログを消さない方法
AlertDialog.Builder#setPositiveButtonだとダイアログが消えてしまうので消さない方法。
AlertDialogでViewFliper使いたいときとかに便利なんじゃないかな。
独自ダイアログ作る方がのちのち手をいれること考えると便利だけどね。
もともとはダイアログ表示しているときにToast出したらDialogの上に来るかどうかを検証したかった。
private void initializeOpenAlert() { Button openAlert = (Button) findViewById(R.id.button3); openAlert.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder b = new AlertDialog.Builder(MainActivity.this); b.setTitle("Title"); b.setMessage("Text Message"); b.setCancelable(false); // 何にもしてないけどダイアログは勝手に消える b.setPositiveButton("Positive", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {} }); b.setNegativeButton("No.", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {} }); b.setNeutralButton("Toast", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {} }); Dialog d = b.create(); d.setOnShowListener(new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialog) { AlertDialog d = (AlertDialog)dialog; // NEUTRALボタンを取得してView.OnClickListenerで上書き d.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast t = Toast.makeText(getApplicationContext(), "Text Text", Toast.LENGTH_LONG); t.setGravity(Gravity.CENTER, 0, 0); t.show(); } }); } }); d.show(); } }); }