Перечислите фрагменты в backstack при использовании компонента навигации Android - PullRequest
2 голосов
/ 26 мая 2019

Я пытаюсь отладить некоторый код и собирался перечислить фрагменты в текущем бэкстеке в Android. Стандартное решение состоит в том, чтобы просто перечислить их из менеджера поддержки, то есть с помощью метода в рамках действия :

Log.i("fragments","Count : " + supportFragmentManager.fragments.toString())

Однако, используя это вместе с компонентом навигации Android, просто перечисляет фрагмент хоста навигации.

... I/fragments: [NavHostFragment{b1a2d20 (f8ec2420-b534-42df-89f0-0cb189610a26) id=0x7f080001}]

Некоторые ответы на SO, например, Сергей Суворов предоставляет следующую альтернативу:

Log.i("fragments","Count : " + supportFragmentManager.findFragmentById(R.id.NAVIGATION)?.childFragmentManager?.fragments.toString())

Что просто возвращает мне ноль

... I/fragments: null

В методе фрагмента Я могу вызвать следующий

Log.i("fragments", fragmentManager?.fragments.toString())

и он возвращает желаемый результат

... I/fragments: [FirstFragment{1475645 (3bb8566b-22b0-4c98-82ea-566e18915145) id=0x7f080001}]

Я, однако, не вижу, как это сделать из упражнения, возможно, кто-то знает магическое заклинание?

...