질문 : DialogFragment에서 다른 Fragment로 콜백을 만드는 방법은 무엇입니까? 필자의 경우 관련된 Activity는 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가 일시 중지되고 수명주기 동안 다시 시작되는 경우 리스너가있을 것이라는 보장은 없습니다. Fragment의 유일한 보증은 setArguments 및 getArguments를 통해 번들을 통과 한 것입니다.
리스너 여야하는 경우 활동을 참조하는 방법이 있습니다.
public Dialog onCreateDialog(Bundle bundle) {
OnClickListener listener = (OnClickListener) getActivity();
....
return new AlertDialog.Builder(getActivity())
........
.setAdapter(adapter, listener)
.create();
}
그러나 나는 Activity가 이벤트를 수신하기를 원하지 않습니다. Fragment가 필요합니다. 실제로 OnClickListener를 구현하는 Java 객체 일 수 있습니다.
DialogFragment를 통해 AlertDialog를 표시하는 Fragment의 구체적인 예를 고려하십시오. 예 / 아니요 버튼이 있습니다. 이 버튼 누름을 생성 한 조각으로 다시 보내려면 어떻게해야합니까?
OnClickListener listener = (OnClickListener) getParentFragment();
DialogFragment에서 단순히 사용할 수 없는지 알 수 없으며 기본 조각은 원래와 같이 인터페이스를 구현합니다.