- Positive Button(主にOKボタンとして)
- Neutral Button(主に…なんだろう?Noボタンがあった場合のキャンセルボタンとか?)
- Negative Button(主にNoボタンやキャンセルボタン)
で、これらを使いたいときは、AlertDialog.Builder#set~~Button()を使えばいい。
それはいいんですが、今回、このボタンの有効/無効を制御したかったのに、すんなりできなかったのでメモ。
Positive Buttonは次のようにして習得が可能だとAPIリファレンスにある。
Button okBtn = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
なので、これをAlertDialog.Builder#create()でDialogのインスタンスを取得したあとに実行するも、NULLが返ってくる。
なぜかとネットを華麗にサーフィンしていたら、次のようにしなきゃだめよっていう記述を海外サイトのどこか(場所が分からなくなってしまった)で見つけました。
categoryNameEditText.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { Button okBtn = dialog.getButton(DialogInterface.BUTTON_POSITIVE); okBtn.setEnabled(s.length() > 0); } }); // 続く...
つまり、リスナーメソッドの中で都度取得しなさいってことです。
これはバグとして認知されていて、現在はこの問題は解消したようですが、Android1.6とかにも対応したアプリを作ろうとすると、こうしないとだめです。
効率が悪いけど、まあ、仕方ないですね。
0 件のコメント:
コメントを投稿