android-如何使用底部应用栏实现导航

时间:2018-08-13 16:00:02

标签: android android-fragments android-architecture-components android-jetpack android-architecture-navigation

我有一个具有以下4种布局的项目:

enter image description here

我实际上有1个活动,其中包含一个底部的应用栏和NavHostFragment,在其中插入了片段。主片段是主视图。有一个“管理”和“设置”片段,它们都是顶层视图(例如主视图),但彼此不依赖。可以通过单击导航抽屉中的项目来切换这3个片段。为简化起见,我正在尝试新的导航体系结构组件。

现在我有一些设计问题:

  1. 是否应该将底部的应用程序栏移动到片段中,以使它们彼此不依赖并且FAB按钮具有其他操作,否则片段切换时我必须在活动中更改onClickListener?

1.1还是应该在管理片段中显示底部的应用程序栏?也许只是Up插入符号的顶部栏。

1.2或底部应用栏+顶部栏和上插入符号

1.3以及抽屉图标怎么样,我应该在Mgmt片段中显示它吗?

  1. 我应该为“设置”片段使用片段还是活动?使用片段时,我必须将底部的应用程序栏移到片段中。否则,底部的应用程序栏将在“设置”片段中可见

  2. 管理片段只有一个回收站视图。单击一个项目应打开一个DetailView。我应该在这里使用片段还是活动?

  3. 我阅读了有关导航体系结构组件的文档,还有关于自定义目的地的部分。另外,ich检查了源代码并知道片段已被替换。 此外,我检查了一些常用的Apps,它们如何通过导航抽屉实现导航,并注意到,它们都替换了片段。为什么没有人隐藏/显示片段,有理由不这样做吗? 假设我们有一个带有listview的片段,其中包含从数据库或其他昂贵任务收集的数据。所以显示/隐藏这些片段而不是替换它们会更好吗?

对不起,这是我的第一个应用程序,对此主题我确实感到困惑,而且似乎没有官方的建议,甚至Material Design指南也没有对此提供参考。

你会怎么做?

1 个答案:

答案 0 :(得分:0)

工具栏(或子类,如BottomAppBar)上的setupWithNavController仅设置“向上”图标和标题-它们不连接添加到工具栏的菜单项。

根据“将菜单项绑定到目的地”文档,您必须设置自己的侦听器并调用onNavDestinationSelected()。对于BottomAppBar,可以通过设置Toolbar.OnMenuItemClickListener:

val navController = Navigation.findNavController(this, R.id.navigation_fragment)
myBottomBar.replaceMenu(R.menu.menu_with_nav_item)

myBottomBar.setupWithNavController(navController)

// Connect MenuItems to the NavController
myBottomBar.setOnMenuItemClickListener {  menuItem ->
    menuItem.onNavDestinationSelected(navController)
}