質問:DialogFragmentから別のFragmentへのコールバックをどのように作成しますか?私の場合、関係するアクティビティはDialogFragmentを完全に認識していないはずです。
私が持っていると考えて
public class MyFragment extends Fragment implements OnClickListener
その後、いくつかの点で私はできません
DialogFragment dialogFrag = MyDialogFragment.newInstance(this);
dialogFrag.show(getFragmentManager, null);
MyDialogFragmentは次のようになります
protected OnClickListener listener;
public static DialogFragment newInstance(OnClickListener listener) {
DialogFragment fragment = new DialogFragment();
fragment.listener = listener;
return fragment;
}
ただし、DialogFragmentがそのライフサイクルを通じて一時停止および再開した場合にリスナーが存在するという保証はありません。フラグメントの唯一の保証は、setArgumentsとgetArgumentsを介してバンドルを介して渡されたものです。
リスナーである必要がある場合、アクティビティを参照する方法があります。
public Dialog onCreateDialog(Bundle bundle) {
OnClickListener listener = (OnClickListener) getActivity();
....
return new AlertDialog.Builder(getActivity())
........
.setAdapter(adapter, listener)
.create();
}
しかし、アクティビティでイベントをリッスンしたくないので、フラグメントが必要です。実際には、OnClickListenerを実装する任意のJavaオブジェクトにすることができます。
DialogFragmentを介してAlertDialogを表示するFragmentの具体例を考えてみましょう。はい/いいえボタンがあります。これらのボタンプレスを、それを作成したフラグメントに送信するにはどうすればよいですか?
OnClickListener listener = (OnClickListener) getParentFragment();
代わりにDialogFragmentで単純に使用できない理由はわかりません。メインのFragmentは、最初に行ったようにインターフェイスを実装します。