1. ホーム
  2. android

[解決済み] フラグメントからダイアログを表示する?

2022-08-31 12:39:02

質問

通常のダイアログを表示する必要があるフラグメントがいくつかあります。これらのダイアログでは、ユーザはyes/noの答えを選択することができ、フラグメントはそれに応じて動作する必要があります。

では Fragment クラスには onCreateDialog() メソッドがないので、ダイアログは外部に実装する必要があります。 Activity . それはいいのですが、そうすると Activity は選択された答えを何らかの方法でフラグメントに報告する必要があります。もちろん、ここでコールバックパターンを使うこともできます。 Activity でリスナークラスに登録し、Activityはそのクラスを通して答えを報告する、またはそのようなものです。

しかし、これは、フラグメントでイエス-ノーのダイアログを表示するという単純なタスクのために、非常に大きな混乱であるように思われます。また、この方法では、私の Fragment は自己完結性が低くなってしまいます。

もっときれいな方法はないのでしょうか?

編集してください。

この質問に対する回答では、フラグメントからダイアログを表示するためにDialogFragmentsをどのように使用すべきかの詳細が説明されていません。なので、AFAIKでは、その方法は

  1. フラグメントを表示する。
  2. 必要に応じて、DialogFragmentをインスタンス化します。
  3. このDialogFragmentのターゲットとして、元のFragmentを設定します。 .setTargetFragment() .
  4. 元のFragmentから.show()でDialogFragmentを表示します。
  5. ユーザーがこのDialogFragment上で何らかのオプションを選択したら、その選択内容を元のFragmentに通知します(例:ユーザーが「yes」をクリックした)。このとき、元のFragmentの参照は .getTarget() で取得できます。
  6. DialogFragmentを終了させます。

どのように解決するのですか?

を使用する必要があります。 ダイアログフラグメント を使うべきです。