###一つのActivityから二つのAlertDialogを使うとき、Activity内でどちらのAlertDialogのボタンが押されたか区別する方法
少し長くなってしまいましたが、タイトル通りです。
私は普段(つまりAlertDialog
が一つのとき)以下のようにして、Activity
から、AlertDialog
内のクリックイベントを取得していました。
kotlin
1//dialog 2class hogeDialog : DialogFragment() { 3 //DialogInterface.OnClickListenerを実装したインナークラスを定義 4 inner class DialogButtonClickListener : DialogInterface.OnClickListener{ 5 override fun onClick(dialog: DialogInterface?, which: Int) { 6 val a = activity 7 if (a is DialogInterface.OnClickListener) { 8 //activityのメソッドに処理を任せる。 9 a.onClick(dialog, which) 10 } 11 } 12 } 13・・・ 14//alertdialogを作り、ネガ・ポジボタンにDialogButtonClickListener()をセットする、 15} 16
kotlin
1//activity 2class fugaActivity : ..., DialogInterface.OnClickListener{ 3・・・ 4 override fun onClick(dialog: DialogInterface?, which: Int) { 5 //whichを使ってネガ・ポジボタンの場合わけをする。 6 } 7・・・ 8}
これはAlertDialog
のインスタンスを生成しているDialogFragment
のインナークラスで実装された、DialogInterface.OnClickListener
を通し、Activity
のメソッドに処理を任せるという動作をしています。
これは上手く動くのですが、Activity
にもう一つ別のAlertDialog
を追加としたとき、「どうやってどちらのAlertDialog
が使われたのかを区別すればよいのか?」と詰まってしまいました。
//二つ目のAlertDialog ほぼ一つ目と同じ class piyoDialog : DialogFragment() { inner class DialogButtonClickListener : DialogInterface.OnClickListener{ override fun onClick(dialog: DialogInterface?, which: Int) { val a = activity if (a is DialogInterface.OnClickListener) { a.onClick(dialog, which) } } } ・・・ }
kotlin
1//詰まってしまったactivity 2class hogeraActivity : ..., DialogInterface.OnClickListener{ 3・・・ 4 override fun onClick(dialog: DialogInterface?, which: Int) { 5 //dialogを使い、どちらのAlertdialogが使われたのか区別する? 6 } 7・・・ 8}
一応、このサイトを参考にdialog
のインナークラスを外部でインスタンス化して、それとacitivy
のonClick()
で渡されたDialogInterface?
型のdialog
をis
で比べるというのを考えたのですが、IDEにダメと言われてしまいました・・・(インナークラスはDialogInterface.OnOnClickListener
だから当たり前か・・・)
というわけで、どちらのAlertDialog
のボタンが押されたのか、区別する手段はあるのでしょうか?
それともこういったことはできないから、他の代替策を考えるべきなのでしょうか?
どうかアドバイスをお願いします・・・・
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/26 12:48