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