首页 > 解决方案 > 使用 Android 的导航组件时列出 backstack 上的 Fragments

问题描述

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

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

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

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

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

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

这只是为我返回 null

... I/fragments: null

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

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

它确实返回了所需的结果

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

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

标签: androidandroid-fragmentskotlinnavigationandroid-components

解决方案


推荐阅读