1. ホーム
  2. アンドロイド

[解決済み】DialogFragmentから結果を受信する。

2022-04-18 20:20:45

質問

を使っています。 ダイアログフラグメント リストからの項目の選択、テキストの入力などです。

値(文字列やリストからの項目など)を呼び出し側のアクティビティ/フラグメントに戻すには、どのような方法が良いでしょうか?

現在、私は呼び出し側のアクティビティに DismissListener で、DialogFragmentにそのアクティビティへの参照を与えています。そして、ダイアログは OnDimiss メソッドを実行し、アクティビティはDialogFragmentオブジェクトから結果を取得します。非常に厄介なことに、DialogFragmentはアクティビティへの参照を失うので、コンフィギュレーション変更(オリエンテーション変更)時には動作しません。

よろしくお願いします。

解決方法は?

使用方法 myDialogFragment.setTargetFragment(this, MY_REQUEST_CODE) をダイアログを表示する場所から呼び出し、ダイアログが終了したときに、その場所から getTargetFragment().onActivityResult(getTargetRequestCode(), ...) を実装し、さらに onActivityResult() を含むフラグメントを作成します。

の乱用と思われる。 onActivityResult() 特にアクティビティには全く関与しないので。でも、googleの公式の人たちが推奨しているのを見たことがあるし、たぶんapiのデモでもそうなんでしょう。私が思うに、それは g/setTargetFragment() が追加されました。