Pertanyaan: Bagaimana cara membuat panggilan balik dari DialogFragment ke Fragmen lain. Dalam kasus saya, Aktivitas yang terlibat harus benar-benar tidak menyadari DialogFragment.
Anggap saja sudah
public class MyFragment extends Fragment implements OnClickListener
Kemudian pada titik tertentu saya bisa melakukannya
DialogFragment dialogFrag = MyDialogFragment.newInstance(this);
dialogFrag.show(getFragmentManager, null);
Di mana MyDialogFragment terlihat seperti
protected OnClickListener listener;
public static DialogFragment newInstance(OnClickListener listener) {
DialogFragment fragment = new DialogFragment();
fragment.listener = listener;
return fragment;
}
Tetapi tidak ada jaminan bahwa pendengar akan ada jika DialogFragment berhenti dan dilanjutkan melalui siklus hidupnya. Satu-satunya jaminan dalam Fragmen adalah yang diteruskan melalui Bundel melalui setArguments dan getArguments.
Ada cara untuk merujuk aktivitas jika harus menjadi pendengar:
public Dialog onCreateDialog(Bundle bundle) {
OnClickListener listener = (OnClickListener) getActivity();
....
return new AlertDialog.Builder(getActivity())
........
.setAdapter(adapter, listener)
.create();
}
Tapi saya tidak ingin Kegiatan mendengarkan acara, saya butuh Fragmen. Sungguh, itu bisa berupa objek Java yang mengimplementasikan OnClickListener.
Pertimbangkan contoh konkret dari Fragmen yang menyajikan AlertDialog melalui DialogFragment. Ini memiliki tombol Ya / Tidak. Bagaimana saya bisa mengirim tombol ini menekan kembali ke Fragmen yang membuatnya?
OnClickListener listener = (OnClickListener) getParentFragment();
di DialogFragment, dan Fragmen utama Anda mengimplementasikan antarmuka seperti yang Anda lakukan pada awalnya.