android - 使用 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}]
然而,我没有从活动中看到如何做到这一点,也许有人知道魔法咒语?
解决方案
推荐阅读
- assembly - RISC-V ISA 中的任何假设阻止堆栈增长而不是下降?
- javascript - 有没有办法在 Node REPL 中获取函数的签名/文档?
- ios - 无法使用开发者帐户在真实设备上安装 WebDriverAgent
- c - 使用指针递归
- python - 无法激活现有的 conda 环境
- java - 持久化实体对象时出现休眠 IllegalArgumentException:无法将字段“id”设置为实体对象?
- functional-programming - Nix Pill 14:如何使 callPackage 可覆盖?
- airflow - apache Apache Airflow/Cloud Composer 中多个客户端的最佳实践?
- c++ - vector 被 push_back 函数覆盖
- python - Python - 读取文件并保存为数组