Dialog に関する微妙な問題
結局解決できず。
ボタンクリックで AlertDialog が消えちゃう問題。以下エントリを見つつ試行錯誤してみたのですがうまく動作せず。
エントリの記述が悪い、という訳ではなくて DialogFragment のヤツが微妙なのだと思っています。
対応そのいち
以下なカンジで DialogFragment を継承したクラスを定義してます。
public static class HogeDialog extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle("hoge"); return builder.create(); }
最初は 上の AlertDialog.Builder#create が AlertDialog を戻すことから、一旦それを掴まえておいて、
AlertDialog d = builder.create(); Button buttonOK = d.getButton(DialogInterface.BUTTON_POSITIVE); buttonOK.setOnClickListener(new View.OnClickListner() {
としたのですがどうも駄目。getButton な戻りがぬるぽだったはず。
対応そのに
実際に HogeDialog を表示する箇所な記述が以下なのですが
FragmentManager manager = getFragmentManager(); HogeDialog d = new HogeDialog(); d.show(manager, "dialog");
上で言う d から Dialog を取得して云々してみたのですが
HogeDialog d = new HogeDialog(); AlertDialog alertDialog = (AlertDialog)d.getDialog(); Button buttonOK = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
これも駄目。こちらは getDialog() の戻りが null だったような記憶あり。また、show() の戻りが、とのことで以下の試してみたのですが
FragmentManager manager = getFragmentManager(); HogeDialog d = new HogeDialog(); AlertDialog alertDialog = d.show(manager, "dialog"); Button buttonOK = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
こちらも NG でした。そもそも的にこんなことしちゃ駄目でしょ的なソレだったりする感満点だったりしますが、とりあえず控えておいて何かあれば情報投入の方向にて。