AndroidのDialogはボタンを押すと自動的に閉じてしまいます.

Dialogをそのまま残しておきたい場合に役立つ小技を紹介します.

まず、builderを利用して作成する際に、PositiveButton(押しても閉じてほしくないボタン)のOnClickListenerに対してnullを設定します.・・・ポイント1

その後、builderで作成したDialogにOnShowListenerを設定し、onShowの中でDialogのButtonを取得してOnClickListenerを設定します.・・・ポイント2

ポイント1として、PositiveButtonを設定しないとそもそもOKボタンが表示されません.

ポイント2として、DialogのButtonはViewなので、OnClickListener#onClickの引数にDialogが有りません.条件分岐の結果等応じてDialogを閉じたい場合は、builderで作成したDialogを格納する変数をfinalにしておき、内部クラスから参照できるようにしておきましょう.

 

上記を実装すると以下のようになります.

Dialogが勝手に閉じてほしくない場合としては、エラー時に入力内容を保持させておき、ユーザに修正を促すような場合でしょうか.

このようなケースで勝手に閉じられると、ユーザは再度1から入力しなくてはならず、ユーザビリティが低下してしまいます.

Leave a Reply

Your email address will not be published. Required fields are marked *