当前位置: 首页 > 知识库问答 >
问题:

Android导航架构组件-获取当前可见片段

阎璞瑜
2023-03-14

在尝试导航组件之前,我曾手动执行片段事务,并使用片段标记获取当前片段。

val的片断:我的片断=support portFragmentManager.findFragmentByTag(标签):我的片断

现在在我的主要活动布局中,我有这样的东西:

<fragment
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/nav_host"
        app:navGraph= "@navigation/nav_item"
        android:name="androidx.navigation.fragment.NavHostFragment"
        app:defaultNavHost= "true"
        />

如何通过导航组件检索当前显示的片段?做

support FragmentManager.findFragmentById(R.id.nav_host)

返回一个NavHostFraank,我想检索我显示的'MyFraank'。

非常感谢。

共有3个答案

容寒
2023-03-14

您应该查看您的导航片段的ChilFragmentManager主导航片段属性,这是当前显示的片段被引用的地方。

val navHost = supportFragmentManager.findFragmentById(R.id.main_nav_fragment)
    navHost?.let { navFragment ->
        navFragment.childFragmentManager.primaryNavigationFragment?.let {fragment->
                //DO YOUR STUFF
        }
    }
}
卜昂熙
2023-03-14

我无法找到检索当前片段实例的方法。然而,您可以使用下面的代码获得最后添加的片段的ID。

navController.currentDestination?.getId()

返回导航文件中的ID。希望这有帮助。

羊舌诚
2023-03-14

我现在设法找到了一种方法,如下所示:

NavHostFragment navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host);
navHostFragment.getChildFragmentManager().getFragments().get(0);

以防你知道它是第一个碎片。我还在研究一种没有这个的方法。我同意这不是最好的方式,但现在应该是这样。

 类似资料:
  • 我正在我的应用程序中尝试导航架构组件。早些时候,我使用片段事务来实现以下功能。基本上,我想从导航。 碎片- 如果我正在使用导航组件并尝试 然后结果是FragmentA被FragmentB替换并且背景片段不可见。 我想知道一个解决方案,如果导航架构组件允许的话。 附言:我听说过嵌套导航主机,但从内部使用它好吗。 更新: FragmentB将有进一步交易的行动,例如: 碎片- 当用户按下后退按钮时,片

  • 是否可以将新的导航架构组件与DialogFragment一起使用?我必须创建自定义导航器吗? 我很乐意将它们与导航图中的新功能结合使用。

  • 我一直在遵循导航架构组件中的文档,以了解这个新的导航系统是如何工作的。 要从一个屏幕到另一个屏幕进行/返回,您需要一个实现接口的组件。 NavHost是一个空视图,当用户在应用程序中导航时,目的地会随之交换。 但是,似乎目前只有片段实现了< code>NavHost 导航架构组件的默认NavHost实现是NavHostFragment。 所以,我的问题是: > < li> 即使我有一个可以用< c

  • 我目前正在学习新的Android导航架构组件 (https://developer.android.com/topic/libraries/architecture/navigation/). 我有点混淆了它的动机和概念,以下是我的不确定性: Android导航架构组件是否旨在消除在单个应用程序中使用多个活动的需要?这意味着,整个应用程序只需要一个单一活动,所有其他页面都将是片段? 在应用程序中使

  • 我不知道如何使用新的导航架构组件,从我的主屏幕(带有连接到底部应用程序栏的浮动操作按钮)导航到没有应用程序栏的另一个屏幕。 当我点击晶圆厂时,我想要我的下一个屏幕(片段?)从右侧滑入。问题是我应该把我的