Soru: DialogFragment'tan başka bir Fragment'a geri arama nasıl oluşturulur? Benim durumumda, ilgili Faaliyet DialogFragment'tan tamamen habersiz olmalıdır.
Düşünün ki
public class MyFragment extends Fragment implements OnClickListener
Sonra bir noktada ben olabilir yapmak
DialogFragment dialogFrag = MyDialogFragment.newInstance(this);
dialogFrag.show(getFragmentManager, null);
MyDialogFragment'ın göründüğü yer
protected OnClickListener listener;
public static DialogFragment newInstance(OnClickListener listener) {
DialogFragment fragment = new DialogFragment();
fragment.listener = listener;
return fragment;
}
Ancak, DialogFragment yaşam döngüsü boyunca duraklar ve devam ederse dinleyicinin etrafta olacağının garantisi yoktur. Bir Parçadaki tek garantiler setArguments ve getArguments yoluyla bir Paket üzerinden geçirilen garantilerdir.
Dinleyici olması gerekiyorsa etkinliğe başvurmanın bir yolu vardır:
public Dialog onCreateDialog(Bundle bundle) {
OnClickListener listener = (OnClickListener) getActivity();
....
return new AlertDialog.Builder(getActivity())
........
.setAdapter(adapter, listener)
.create();
}
Ama Aktivitenin olayları dinlemesini istemiyorum, bir Fragmana ihtiyacım var. Gerçekten, OnClickListener uygulayan herhangi bir Java nesnesi olabilir.
DialogFragment aracılığıyla bir AlertDialog sunan bir Parçanın somut örneğini düşünün. Evet / Hayır düğmeleri vardır. Bu düğmeye basılmasını, onu oluşturan Fragment'e nasıl geri gönderebilirim?
OnClickListener listener = (OnClickListener) getParentFragment();
yerine DialogFragment içinde neden kullanamadığınızı anlamıyorum ve ana Parçanız arayüzü ilk yaptığınız gibi uyguluyor.