คำถาม: จะสร้างการติดต่อกลับจาก 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 หยุดชั่วคราวและดำเนินต่อผ่านวงจรชีวิตของมัน การรับประกันเฉพาะในแฟรกเมนต์คือการส่งผ่านผ่าน Bundle ผ่าน setArguments และ getArguments
มีวิธีอ้างอิงกิจกรรมหากควรเป็นผู้ฟัง:
public Dialog onCreateDialog(Bundle bundle) {
OnClickListener listener = (OnClickListener) getActivity();
....
return new AlertDialog.Builder(getActivity())
........
.setAdapter(adapter, listener)
.create();
}
แต่ฉันไม่ต้องการให้กิจกรรมเพื่อฟังกิจกรรมฉันต้องการแฟรกเมนต์ จริง ๆ แล้วมันอาจเป็นวัตถุ Java ใด ๆ ที่ใช้ OnClickListener
พิจารณาตัวอย่างที่เป็นรูปธรรมของ Fragment ที่นำเสนอ AlertDialog ผ่าน DialogFragment มันมีปุ่มใช่ / ไม่ใช่ ฉันจะส่งปุ่มเหล่านี้กลับไปที่ Fragment ที่สร้างขึ้นได้อย่างไร
OnClickListener listener = (OnClickListener) getParentFragment();
ใน DialogFragment แทนได้และแฟรกเมนต์หลักของคุณจะใช้อินเทอร์เฟซตามที่คุณทำ