找出当前显示的片段是什么的最佳方法是什么?

What's the best way to find out what the currently displayed fragment is?

我正在尝试寻找类似于 FragmentManager.peek() 方法的方法。

用例是我需要将屏幕焦点发送到当前加载的片段。但是,我发现自己必须手动跟踪当前正在显示的片段,以便我可以告诉它聚焦。

具体情况是我有一个菜单,其中有许多按钮。当用户单击一个按钮时,我需要将焦点从按钮转移到当前加载的片段中的特定视图 - 但我无法知道当前加载的片段是什么,它可能是与菜单项关联的初始片段,或者它可能是一个完全不同的片段,用户到达时已经深入挖掘了原始片段......所以我的逻辑必须是

pseudo...
if(currentFragment == navButton.myFragmentType)
   currentFragment.sendFocusToYourFirstRelevantElement()
else
   navButton.loadMyFragmentType()

我的问题是我不知道当前显示的 Fragment 是什么,除非我手动跟踪,但这*真的很难看。

希望有更原生的解决方案。

您必须手动跟踪碎片。
想想 Fragments 是如何工作的——它们被设计成可重复使用的,而且值得注意的是,一次屏幕上可以有多个。正因为如此,它并不像仅仅向 FragmentManager 查询当前显示的 Fragment 那样简单,因为它不知道 当前显示的是哪个 你想要的 Fragment。 该知识所需的逻辑不能放在 FragmentManager 中,因为它非常特定于您的应用程序。

更多信息:What Fragments am I hosting and displaying?