Я пытаюсь отладить некоторый код и собирался перечислить фрагменты в текущем бэкстеке в 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}]
Я, однако, не вижу, как это сделать из упражнения, возможно, кто-то знает магическое заклинание?