我有一个具有以下4种布局的项目:
我实际上有1个活动,其中包含一个底部的应用栏和NavHostFragment,在其中插入了片段。主片段是主视图。有一个“管理”和“设置”片段,它们都是顶层视图(例如主视图),但彼此不依赖。可以通过单击导航抽屉中的项目来切换这3个片段。为简化起见,我正在尝试新的导航体系结构组件。
现在我有一些设计问题:
1.1还是应该在管理片段中显示底部的应用程序栏?也许只是Up插入符号的顶部栏。
1.2或底部应用栏+顶部栏和上插入符号
1.3以及抽屉图标怎么样,我应该在Mgmt片段中显示它吗?
我应该为“设置”片段使用片段还是活动?使用片段时,我必须将底部的应用程序栏移到片段中。否则,底部的应用程序栏将在“设置”片段中可见
管理片段只有一个回收站视图。单击一个项目应打开一个DetailView。我应该在这里使用片段还是活动?
我阅读了有关导航体系结构组件的文档,还有关于自定义目的地的部分。另外,ich检查了源代码并知道片段已被替换。 此外,我检查了一些常用的Apps,它们如何通过导航抽屉实现导航,并注意到,它们都替换了片段。为什么没有人隐藏/显示片段,有理由不这样做吗? 假设我们有一个带有listview的片段,其中包含从数据库或其他昂贵任务收集的数据。所以显示/隐藏这些片段而不是替换它们会更好吗?
对不起,这是我的第一个应用程序,对此主题我确实感到困惑,而且似乎没有官方的建议,甚至Material Design指南也没有对此提供参考。
你会怎么做?
答案 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)
}