Получить фрагмент из NavController - PullRequest
0 голосов
/ 08 октября 2018

У меня есть один NavController (navOrdersController) с 2 фрагментами внутри.Мой текущий фрагмент - OrderDetailFragment, и я хочу получить доступ к первому фрагменту (OrdersFragment) для обновления данных в MainActivity.Как я могу это сделать?

enter image description here

Я пытался найти findFragmentByTag и findFragmentByID, но всегда возвращал ноль.

Я получил доступ OrderDetailFragment с помощью:

this.supportFragmentManager.fragments[position].findNavController().currentDestination

enter image description here

Но мне нужен предыдущий фрагмент.Большое спасибо

1 Ответ

0 голосов
/ 08 октября 2018

Если оба фрагмента имеют одинаковую родительскую активность, т. Е. Используйте getActivity() для получения ссылки на активность и Activity.getSupportFragmentManager, чтобы найти фрагмент.

.....

Деятельность X-> Фрагмент A -> Фрагмент B

Если фрагмент B является дочерним для фрагмента A, используйте getParentFragment.Фрагмент, который вы ищете, будет этим фрагментом.

Дайте мне знать, если что-то не ясно.

PS: навигационная библиотека Jetpack делает то же самое, что мы делали явно.Итак, предыдущая логика Activity-Fragment все еще действительна.

EDIT:

try (parentFragment as NavHostFragment).childFragmentManager.findFragmentById()

В прошлый раз я забыл, что у действия есть объявление NavHostFragment в егомакет, поэтому всегда будет корневой родительский фрагмент типа 'NavHostFrament'

РЕДАКТИРОВАТЬ: я нашел обходной путь для этого

parentFragment.childFragmentManager.getFragment(Bundle().also { it.putInt("foobar",0) }, "foobar")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...