Вопрос: Как создать обратный вызов из диалога DialogFragment в другой фрагмент. В моем случае вовлеченная деятельность должна полностью не знать о 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();
}
Но я не хочу, чтобы Activity прослушивал события, мне нужен фрагмент. Действительно, это может быть любой объект Java, который реализует OnClickListener.
Рассмотрим конкретный пример фрагмента, который представляет AlertDialog через DialogFragment. Он имеет кнопки "Да/Нет". Как я могу отправить эти кнопки нажатием на Фрагмент, который его создал?