質問: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を提示するフラグメントの具体例を考えてみましょう。はい/いいえボタンがあります。これらのボタンの押下を、それを作成したフラグメントに戻すにはどうすればよいですか?