Если ваши фрагменты тесно связаны между собой, просто не запускайте их в отдельных действиях. Для случая с одной панелью вы можете просто переключать фрагменты в пределах одного действия.
В противном случае, если вы хотите разделить их между действиями, вам нужно использовать модель onActivityResult () для распространения результатов обратно, а в случае двойной панели «эмулировать» ее, просто выполнив второй вызов onActivityResult () из первый фрагмент. Обратите внимание, что Fragment.setTargetFragment () включает аргумент кода запроса, чтобы облегчить это.
I have activity A loading Fragment F1 which loads fragment F2
ИМХО, фрагменты не должны загружать другие фрагменты. Действия загружают фрагменты, основываясь на доступном пространстве экрана. Фрагменты не должны ни знать, ни заботиться о том, существует ли какой-либо другой фрагмент в текущем действии или другие фрагменты присутствуют в других действиях.
I have F2 calling back to activity A to pop it off of the stack. Should I then be looking at passing a message to F1 to do what it needs to do?
Да.
What I'm wondering is whether I'm on the right track with regards passing messages back and forwards via the parent activity or is there a more direct way of F1 responding to F2 performing something that requires it to be closed and F1 do what it needs to do.
Я не хотел бы, чтобы F1 даже знал, что F2 существует, или наоборот. Когда пользователь делает что-то в F1, что должно привести к значительному сдвигу контекста (например, отобразить какой-то другой фрагмент / активность), F1 должен сообщить об активности хостинга, возможно, через интерфейс слушателя, зарегистрированный в F1 (для поддержки нескольких возможных действий хостинга) , Затем действие будет организовано для появления F2 либо в его собственном действии, либо в другом действии. Точно так же, когда F2 завершает работу, он сообщает об активности своего хостинга через интерфейс слушателя, и это действие может перенаправлять управление обратно в соответствующее место.
Я несколько скептически отношусь к вашему подходу "F2 выполняет действие, которое должно привести к его закрытию", если только F2 не является DialogFragment.