Как лучше передать сообщение от одного фрагмента к его родительскому (эквивалент onActivityResult)

Хорошо, я знаю, что, возможно, я думаю об этом неправильно, но …

A) У меня есть активность A Фрагмент загрузки F1, который загружает фрагмент F2. F2 выполняет действие, которое должно привести к его закрытию, а затем F1 выполняет определенное действие в зависимости от того, как оно было закрыто.

B) Теперь, поскольку я также поддерживаю одиночную панель, без фрагмента, версия F1 также загружает F2 косвенно через вызов startActivityForResult. Это означает, что после завершения операции оболочки F2 F1 получает вызов onActivityResult, а F1 может делать то, что ему нужно.

Тем не менее, я изо всех сил стараюсь найти лучший способ реализовать то, что я хочу (A). У меня есть F2, возвращающий активность A, чтобы выскочить из стека. Должен ли я затем смотреть сообщение F1, чтобы сделать то, что нужно? В качестве альтернативы (я полагаю, F1 может нести ответственность за выталкивание F2 из стека).

Мне интересно, правильно ли я нахожусь на правильном пути передачи сообщений назад и вперед через родительскую активность или есть более прямой способ F1 отвечать на F2, выполняя что-то, что требует его закрытия, и F1 делает то, что он Необходимо сделать.

Заранее спасибо. Питер.

Если ваши фрагменты тесно связаны друг с другом, просто не запускайте их в отдельных действиях. Для случая с одной панелью вы можете просто переключать фрагменты в пределах одного действия.

В противном случае, если вы хотите отделить их между действиями, вам нужно использовать модель onActivityResult() для распространения результатов назад, а в случае с двойной onActivityResult() «эмулировать» ее просто получив второй вызов onActivityResult() первого фрагмента , Обратите внимание, что Fragment.setTargetFragment() содержит аргумент кода запроса, чтобы облегчить это.

У меня есть активная загрузка Фрагмент F1, который загружает фрагмент F2

ИМХО, фрагменты не должны загружать другие фрагменты. Управляет загрузкой фрагментов, основываясь на доступном пространстве экрана. Фрагменты не должны знать и не заботиться о том, существует ли какой-либо другой фрагмент в текущей деятельности, или если другие фрагменты находятся в других действиях.

У меня есть F2, возвращающий активность A, чтобы выскочить из стека. Должен ли я затем смотреть сообщение F1, чтобы сделать то, что нужно?

Да.

Мне интересно, правильно ли я нахожусь на правильном пути передачи сообщений назад и вперед через родительскую активность или есть более прямой способ F1 отвечать на F2, выполняя что-то, что требует его закрытия, и F1 делает то, что он Необходимо сделать.

Я бы не знал, что F1 даже знает, что F2 существует, или наоборот. Когда пользователь делает что-то в F1, что должно привести к существенному сдвигу контекста (например, отобразить некоторые другие фрагменты / действия), F1 должен сообщить об активности хостинга, возможно, через интерфейс прослушивателя, зарегистрированный в F1 (для поддержки нескольких возможных действий хостинга) , Затем деятельность будет способствовать тому, чтобы F2 появлялся либо в своей собственной деятельности, либо в другой деятельности. Точно так же, когда F2 завершает работу, он будет информировать свою деятельность по хостингу через интерфейс прослушивателя, и эта деятельность может перенаправить управление обратно в соответствующее место.

Я несколько скептически отношусь DialogFragment всему вашему «F2 выполняет действие, которое должно привести к закрытию», если F2 не является DialogFragment .

Intereting Posts
Установите тип предпочтения в виде «Выбрать контакт» Traceview не может открыться из DDMS в eclipse Каковы коды ответов (значения), возвращаемые сервером Google Play в ответ на лицензию? Включение / выключение Android-устройства Android-анимация не работает на ProgressBar Android Manifest автоматически создает недопустимые разрешения Влияние установки видимости родительского вида на своих детей MultiLine EditText в Android с курсором, начинающимся сверху Facebook Как кнопка Интеграция в Android Android: Как растянуть изображение до ширины экрана при сохранении пропорций? Как найти, находится ли телефон в режиме ожидания / в режиме ожидания для Android Я использую ShareActionProvider в PopupMenu, но показываю два PopupMenu? Как сделать верхний или нижний колонтитул ListView недоступным для просмотра Разрешение canvas js export не работает на устройстве Android Android: простой GridView, который отображает текст в сетках