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

在FAB click上导航到fragment(导航架构组件)

陈昊昊
2023-03-14

我不知道如何使用新的导航架构组件,从我的主屏幕(带有连接到底部应用程序栏的浮动操作按钮)导航到没有应用程序栏的另一个屏幕。

当我点击晶圆厂时,我想要我的下一个屏幕(片段?)从右侧滑入。问题是我应该把我的BottomAppBar放在哪里?如果我把它放在我的主活动中,那么我的问题是浮动操作按钮没有设置导航控制器。我也不能把我的BottomAppBar放在我的片段中。我不知所措。


共有3个答案

湛安宁
2023-03-14

把它放在活动的MainActivity和setOnClickListener中,它就会正常工作。

override fun onStart() {
  super.onStart()
  floatingActionButton.setOnClickListener {
    it.findNavController().navigate(R.id.yourFragment)
   }
}

注意:此解决方案类似于和hack,更好的方法是遵循活动生命周期并在活动准备好交互时设置OnClickListener。

类似问题[已解决]

米夕
2023-03-14

您可以在MainActivity中拥有您的BottomAppBar,并访问片段中的FloatingAction按钮,如下所示

activity?.fab?.setOnClickListener { 
    /*...*/
    findNavController().navigate(R.id.action_firstFragment_to_secondFragment, mDataBundle)
}

您可以对另一个活动隐藏底部AppBar,如下所示

(activity as AppCompatActivity).supportActionBar?.hide()

确保您。show()返回上一个片段时显示底部AppBar

万俟英锐
2023-03-14

今天遇到这个问题,我发现有一个简单而优雅的解决方案。

val navController = findNavController(R.id.navHostFragment)

fabAdd.setOnClickListener {
   navController.navigate(R.id.yourFragment)
}  

这负责导航。然后,您必须控制活动中的BottomAppBar的可见性。

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

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

  • 我正在一个新的Android应用程序上使用导航组件,但我不知道怎么做 首先,我有我的主活动,我有main_navigation_graph 主要活动 NavHostFragment main_navigation_graph里面有3个碎片 这里一切都很好。问题是当我到达最后一个片段时,因为在这个片段上,我想根据BottomNavigationView输入(暂时)显示一些子片段(在新的NavHost

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

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

  • 当我从deeplink(用户点击URL)打开应用程序并按下后退按钮时,我希望用户导航到我导航图中的前一个片段,但它只是退出应用程序。 文件中说,反向导航的工作方式应该与用户自然到达屏幕的方式相同。 我可以在导航图中指定所需的backbackback吗?或者可以在deeplink后自动形成Backback?对于旧版本的库,我发现在按back press键后,它应该导航到导航图的根目录,但事实并非如此