Я переключаю одно из своих приложений на фрагменты (от просто действий) и либо я что-то упускаю, либо они серьезно усложнили весь процесс показа AlertDialog.
Во-первых, вот что я пытаюсь сделать: показать один из нескольких диалогов с предупреждениями с положительной и отрицательной кнопками с методами обратного вызова, связанными с каждым дном. Диалог должен пережить (то есть: воссоздать) поворот экрана.
До: В прошлом все, что вам нужно было сделать, - это создать AlertDialog с соответствующими методами обратного вызова и т. Д. И показать его, и система позаботится обо всем, включая поворот экрана.
Теперь: если я создаю и показываю AlertDialog из моего фрагмента, он не воссоздается при повороте экрана и, согласно LogCat, теряет память во время уничтожения. Согласно новым документам для разработчиков по фрагментам, я должен использовать DialogFragment для создания AlertDialog, чтобы менеджер фрагментов мог обрабатывать такие вещи, как поворот экрана и т. Д. (См. Здесь: http://developer.android.com/reference/android/app/DialogFragment.html под заголовком «Диалог оповещения»). хорошо, однако, проблема в методах обратного вызова. В представленном примере они жестко закодированы в двух методах в Activity. У меня есть две проблемы с этим, я не хочу вовлекать активность в этот процесс, и мне нужны разные методы обратного вызова для разных создаваемых мной AlertDialog. Я действительно не хочу создавать разные классы с жестко закодированными обратными вызовами для каждого AlertDialog, который я буду создавать. Должен быть более простой способ, иначе это просто глупость :)
Другой способ поместить вещи ... фрагменты воссоздаются после поворота экрана менеджером фрагментов, используя любые «аргументы», которые были сохранены в процессе создания. Эти аргументы сохраняются в Bundle, однако я не могу сохранить метод обратного вызова внутри Bundle, поэтому менеджер фрагментов не может воссоздать фрагмент с переданным методом обратного вызова, только жестко закодированный, что означает, что мне нужны отдельные классы. с жестко закодированными методами обратного вызова для каждого типа AlertDialog я буду отображать ... это глупо или я просто что-то здесь упускаю?
Спасибо за любую помощь,
Гарри