AlertDialog.Builderのダイアログ外を押された時

6,856 views
Skip to first unread message

レイ

unread,
Apr 26, 2013, 5:53:30 AM4/26/13
to android-g...@googlegroups.com
お世話になっております。
初歩的な部分で失礼致します。
AlertDialog.Builderのダイアログを表示した際、
ダイアログ表示の「閉じる」ボタン以外ではダイアログが閉じないようにしたいのですが、
どうにもうまくいきません。

なにかいい方法ご教授いただけないでしょうか。

Hirokazu Fukami

unread,
Apr 26, 2013, 6:08:06 AM4/26/13
to android-g...@googlegroups.com
こんにちはfkmです。
builder.setCancelable(false)
を呼んであげると、確か閉じなくなったと思います

http://developer.android.com/reference/android/app/AlertDialog.Builder.html#setCancelable(boolean)

2013/4/26 レイ <lukeg...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、android-group-j...@googlegroups.com
> にメールを送信します。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>
>



--
-------------------------------------------------------------
深見 浩和(Hirokazu Fukami)

URI:http://www.fkmsoft.jp
email: f...@fkmsoft.jp

レイ

unread,
Apr 26, 2013, 6:43:52 AM4/26/13
to android-g...@googlegroups.com
fkmさん
ありがとうございました。解決しました。

showしてやるときに
show().setCanceledOnTouchOutside(false);
の用にやっても出来るようですね。備忘Logっとかないと……。

2013年4月26日金曜日 19時08分06秒 UTC+9 fkm:
こんにちはfkmです。
builder.setCancelable(false)
を呼んであげると、確か閉じなくなったと思います

http://developer.android.com/reference/android/app/AlertDialog.Builder.html#setCancelable(boolean)

2013/4/26 レイ <lukeg...@gmail.com>:
> お世話になっております。
> 初歩的な部分で失礼致します。
> AlertDialog.Builderのダイアログを表示した際、
> ダイアログ表示の「閉じる」ボタン以外ではダイアログが閉じないようにしたいのですが、
> どうにもうまくいきません。
>
> なにかいい方法ご教授いただけないでしょうか。
>
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、android-group-japan+unsubscribe@googlegroups.com
> にメールを送信します。
> このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。

Hirokazu Fukami

unread,
Apr 26, 2013, 8:08:17 AM4/26/13
to android-g...@googlegroups.com
こんばんはfkmです。

気になったので1点だけ
> showしてやるときに
> show().setCanceledOnTouchOutside(false);
AlertDialog.Builderを使う場面で、show()を開発者が呼ぶケースは無いような気がします。
Fragmentを使っていない場合は、ActivityクラスのonCreateDialog()の戻り値としてBuilder.create()したものを、
Fragmentを使う場合は、DialogFragmentクラスのonCreateDialog()の戻り値としてBuilder.create()したものを
返し、Androidのフレームワーク側でshow()が勝手に呼ばれるもの とfkmは理解しています。


2013/4/26 レイ <lukeg...@gmail.com>:
> fkmさん
> ありがとうございました。解決しました。
>
> showしてやるときに
> show().setCanceledOnTouchOutside(false);
> の用にやっても出来るようですね。備忘Logっとかないと……。
>
> 2013年4月26日金曜日 19時08分06秒 UTC+9 fkm:
>>
>> こんにちはfkmです。
>> builder.setCancelable(false)
>> を呼んであげると、確か閉じなくなったと思います
>>
>>
>> http://developer.android.com/reference/android/app/AlertDialog.Builder.html#setCancelable(boolean)
>>
>> 2013/4/26 レイ <lukeg...@gmail.com>:
>> > お世話になっております。
>> > 初歩的な部分で失礼致します。
>> > AlertDialog.Builderのダイアログを表示した際、
>> > ダイアログ表示の「閉じる」ボタン以外ではダイアログが閉じないようにしたいのですが、
>> > どうにもうまくいきません。
>> >
>> > なにかいい方法ご教授いただけないでしょうか。
>> >
>> > --
>> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
>> >
>> > このグループから退会し、メールの受信を停止するには、android-group-j...@googlegroups.com
>> > にメールを送信します。
>> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
>> > http://groups.google.com/group/android-group-japan?hl=ja
>> > からこのグループにアクセスしてください。
>> > その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>> >
>> >
>>
>>
>>
>> --
>> -------------------------------------------------------------
>> 深見 浩和(Hirokazu Fukami)
>>
>> URI:http://www.fkmsoft.jp
>> email: f...@fkmsoft.jp
>
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、android-group-j...@googlegroups.com
> にメールを送信します。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。

レイ

unread,
Apr 30, 2013, 5:17:51 AM4/30/13
to android-g...@googlegroups.com
返信が遅くなりました。
fkmさん、コメントありがとうございます。

コメント頂きた部分を調べてみると
http://assam-at-night.blogspot.jp/2012/11/dialogfragment.html
"Dialogはあまり深く考えずに使っても大丈夫だったのだが、DialogFragmentは落とし穴が多数あり、正しく使わないとアプリが落ちてしまう。
具体的には、Fragmentの再生成が発生したときに正しく動作しなくなる。"

という記事を発見しました。な、なるほど、危うい橋を渡っている感じになってました。
勉強になりました。ありがとうございます。

2013年4月26日金曜日 21時08分17秒 UTC+9 fkm:
>> > このグループから退会し、メールの受信を停止するには、android-group-japan+unsubscribe@googlegroups.com
>> > にメールを送信します。
>> > このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。
>> > http://groups.google.com/group/android-group-japan?hl=ja
>> > からこのグループにアクセスしてください。
>> > その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>> >
>> >
>>
>>
>>
>> --
>> -------------------------------------------------------------
>> 深見 浩和(Hirokazu Fukami)
>>
>> URI:http://www.fkmsoft.jp
>> email: f...@fkmsoft.jp
>
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、android-group-japan+unsubscribe@googlegroups.com
> にメールを送信します。
> このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。

Makoto Yamazaki

unread,
Apr 30, 2013, 6:41:45 AM4/30/13
to android-g...@googlegroups.com
zaki です。

ここに載っている以外だと Dialog はdismiss() を何度呼んでも問題ないけど
DialogFragment はダイアログが表示されてない状態で dismiss() を呼ぶとNPEで
落ちるというのもあります。

あとこれは DialogFragment にかぎらず Fragment 全般ですが、Fragment が属するActivity が停止中に 
dismiss() などstate を操作するメソッドを呼ぶと例外がスローされます。普通のフラグメントでは
あまり行わない操作ですが、AsyncTask とダイアログを組み合わせて AsyncTask 完了時に
ダイアログを閉じるような作りになっている場合この状況が発生するので注意が必要です。


2013/4/30 レイ <lukeg...@gmail.com>
このグループから退会し、メールの受信を停止するには、android-group-j...@googlegroups.com にメールを送信します。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。

http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
 
 



--
YAMAZAKI Makoto

レイ

unread,
Apr 30, 2013, 11:03:47 PM4/30/13
to android-g...@googlegroups.com
zakiさん、コメントありがとうございます。

ダイアログ出すだけでもなかなか色々とあるんですね。
と言うかFragmentが奥深いって感じですか。

↓がわかりやすく説明されていて参考になりました。

2013年4月30日火曜日 19時41分45秒 UTC+9 zaki:


2013/4/30 レイ <lukeg...@gmail.com>
>> > このグループに投稿するには、android-group-jap...@googlegroups.com にメールを送信してください。
>> > http://groups.google.com/group/android-group-japan?hl=ja
>> > からこのグループにアクセスしてください。
>> > その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>> >
>> >
>>
>>
>>
>> --
>> -------------------------------------------------------------
>> 深見 浩和(Hirokazu Fukami)
>>
>> URI:http://www.fkmsoft.jp
>> email: f...@fkmsoft.jp
>
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、android-group-japan+unsubscribe@googlegroups.com
> にメールを送信します。
> このグループに投稿するには、android-group-jap...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>
>



--
-------------------------------------------------------------
深見 浩和(Hirokazu Fukami)

URI:http://www.fkmsoft.jp
email: f...@fkmsoft.jp

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、android-group-japan+unsubscribe@googlegroups.com にメールを送信します。
このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
 
 



--
YAMAZAKI Makoto
Reply all
Reply to author
Forward
0 new messages