通常のダイアログを表示する必要があるいくつかのフラグメントがあります。これらのダイアログで、ユーザーは「はい/いいえ」の回答を選択でき、フラグメントはそれに応じて動作するはずです。
さて、Fragment
クラスにはonCreateDialog()
オーバーライドするメソッドがないので、ダイアログを外側のコンテナに実装する必要があると思いますActivity
。それは問題ありませんが、その場合Activity
、選択された回答を何らかの形でフラグメントに報告する必要があります。もちろん、ここでコールバックパターンを使用することもできるので、フラグメントはそれ自体をActivity
リスナクラスに登録し、アクティビティはそれを介して、またはそのようなもので答えを報告します。
しかし、これは、「単純な」はい/いいえのダイアログをフラグメントで表示するため、単純なタスクではかなり大きな混乱のようです。また、この方法では、Fragment
自己完結性が低くなります。
これを行うためのより明確な方法はありますか?
編集:
この質問への答えは、フラグメントからのダイアログを表示するためにDialogFragmentsをどのように使用する必要があるかを詳細に説明していません。だから私の知る限り、行く方法は:
- フラグメントを表示します。
- 必要に応じて、DialogFragmentをインスタンス化します。
- を使用して、このDialogFragmentのターゲットとして元のFragmentを設定し
.setTargetFragment()
ます。 - 元のフラグメントの.show()でDialogFragmentを表示します。
- ユーザーがこのDialogFragmentでいくつかのオプションを選択し、この選択について元のFragmentに通知すると(たとえば、ユーザーが「はい」をクリックした場合)、. getTarget()を使用して元のFragmentの参照を取得できます。
- DialogFragmentを閉じます。