使用Android的导航组件时在backstack上列出fragments

Car*_*rel 8 navigation android android-fragments kotlin android-components

我正在尝试调试一些代码,并希望在 Android 中列出当前后台堆栈中的片段。库存解决方案是简单地从支持经理中列出它们,因此从活动中方法中:

Log.i("fragments","Count : " + supportFragmentManager.fragments.toString())
Run Code Online (Sandbox Code Playgroud)

但是,将它与 Android 的导航组件一起使用只会列出导航主机片段。

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

SO 例如Sergii Suvorov 的一些答案提供了以下替代方案:

Log.i("fragments","Count : " + supportFragmentManager.findFragmentById(R.id.NAVIGATION)?.childFragmentManager?.fragments.toString())
Run Code Online (Sandbox Code Playgroud)

这对我来说只是返回 null

... I/fragments: null
Run Code Online (Sandbox Code Playgroud)

片段方法中,我可以调用以下内容

Log.i("fragments", fragmentManager?.fragments.toString())
Run Code Online (Sandbox Code Playgroud)

它确实返回了所需的结果

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

然而,我不知道如何从活动中做到这一点,也许有人知道魔法咒语?