質問: activity if (a is DialogInterface.OnClickListener) { a.onClick(dialog, which) } } } ・・・ } ``` ``` //詰まってしまったactivity class hogeraActivity : ..., DialogInterface.OnClickListener{ ・・・ override fun onClick(dialog: DialogInterface?, which: Int) { //dialogを使い、どちらのAlertdialogが使われたのか区別する? } ・・・ } ``` 一応、このサイトを参考に`dialog`のインナークラスを外部でインスタンス化して、それと`acitivy`の`onClick()`で渡された`DialogInterface?`型の`dialog`を`is`で比べるというのを考えたのですが、IDEにダメと言われてしまいました・・・(インナークラスは`DialogInterface.OnOnClickListener`だから当たり前か・・・) というわけで、どちらの`AlertDialog`のボタンが押されたのか、区別する手段はあるのでしょうか? それともこういったことはできないから、他の代替策を考えるべきなのでしょうか? どうかアドバイスをお願いします・・・・
回答: Activity が DialogInterface.OnClickListener を継承している意味があるのでしょうか. hogeDialog や piyoDialog が hogeraActivity への参照を保持されているのでしたら, hogeraActivity に両ダイアログ用のメソッド, 例えば onHogeClick()/onPiyoClick() を作成し, 両ダイアログからそれぞれを呼ぶだけかと思います. もし特定の Activity 専用にされたくないということでしたら, DialogInterface.OnClickListener に代わる Listener, 例えば OnHogeClickListener/OnPiyoClickListener インターフェースを定義し, それらで onHogeClick/onPiyoClick() を宣言し, Activity にそれらを継承・実装させ, 両ダイアログの onClick 内の if 文で a is OnHogeClickListener 等とチェックするのが良いかと思います.