DialogのPositive(Negative)ボタンへのアクセスについて

1,756 views
Skip to first unread message

ug24k8

unread,
Oct 17, 2011, 10:03:41 AM10/17/11
to 日本Androidの会
いつもお世話になっております。
ug24k8です。

AlertDialog.Builderにて作成したボタン付きのDialogに対して、
動的にボタンを有効/無効にしたく考えています。
------------
myView = …; // カスタムView

//ダイアログの作成
Dialog dialog = new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_info)
.setTitle(”タイトル”)
.setView(myView)
.setPositiveButton(R.string.common_Ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton)
{
// OKボタンの処理

}
}).create();

/*
ここらで myView のウィジェットのイベントリスナーとして
dialog のOKボタンを有効/無効切り替え Button.setEnabled(boolean)
をするイベントを登録したい。
*/

// Dialogの表示
dialog.show();
------------
これを実装するにはどのようにすればよいのでしょうか?

最終手段としてはAlertDialogBuilderではボタンを作成せず、
カスタムView側にボタンを表示させようと思ってますが…
できればAlertDialogBuilderで処理したいと思ってます。

お手数ですがご教授お願いいたします。

元木

unread,
Oct 17, 2011, 10:16:38 AM10/17/11
to android-g...@googlegroups.com
こんばんは、元木です。

AlertDialog#getButton()メソッドでボタンの参照を取得することができますので、
以下のようにすればよろしいかと。

    AlertDialog dialog = builder.create();
    Button button = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
    button.setEnabled(enabled);

ただ、dialog.show()した後でsetEnabled()しても有効・無効が切り替わってくれるかは、
やったことがないので分からないです。

"ss.ももんが"

unread,
Oct 17, 2011, 10:34:43 AM10/17/11
to android-g...@googlegroups.com
ss.momongaと言います。

SwipePadをご存知の方は多いと思いますが、いつでも画面外からのスワイプによるアプリ起動を実装したいと考えています。
Serviceで実装しているのかと勝手に推測しているのですが、それ以上の方法が思いつきません。
ネットで調べてみても、それらしき情報は見つからず、調査に行き詰まっている状態です。

どなたか、方法やヒントをお持ちの方はいらっしゃいませんでしょうか?

ug24k8

unread,
Oct 18, 2011, 3:56:04 PM10/18/11
to 日本Androidの会
元木様

いつも有難う御座います。ug24k8です。

ご指摘の方法で無事解決できました。

基底クラスのDialog でやろうとしていたのが原因だったのですね。
確かに言われてみれば当然なのですが、自分ひとりだと絶対気づかなかったと思います。

本当に有難う御座いました。

ug24k8

unread,
Oct 18, 2011, 4:04:40 PM10/18/11
to 日本Androidの会
ss.momonga様

投稿された「SwipePadのような起動方法に付いて」の件ですが、
どうも新規ディスカッションとしての投稿でなく、
自分の投稿した「DialogのPositive(Negative)ボタンへの アクセスについて」に
紐づいた形になっているようです。

(なぜこのような状態になっているのかは不明ですが)

複数の案件が一つのディスカッションに混在する形になってしまい
他の方々の目に留まりにくくなっているかと思いますので
再度新規投稿された方が良いもしれません。
Reply all
Reply to author
Forward
0 new messages