0

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

在此处输入图像描述

我实际上有 1 个活动,其中包含一个底部应用栏和注入片段的 NavHostFragment。主片段是主视图。有一个 Management 和一个 Setting 片段,它们都是像主视图一样的顶级视图,但不相互依赖。这 3 个片段可以通过单击导航抽屉中的项目来切换。为简化起见,我正在尝试新的导航架构组件。

现在我有一些设计问题:

  1. 我是否应该将底部应用栏移动到片段中,因为它们不相互依赖并且 FAB 按钮有另一个动作,否则我必须在片段切换时更改活动中的 onClickListener?

1.1 或者我什至应该在管理片段中显示底部应用栏?也许只是带有 Up 插入符号的顶部栏。

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

1.3和抽屉图标呢,我应该在Mgmt片段中显示它吗

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

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

  3. 我阅读了有关导航架构组件的文档,其中有一个关于自定义目的地的部分。此外,我检查了源代码并知道片段被替换了。此外,我查看了一些常用应用程序如何使用导航抽屉实现导航,并注意到它们都替换了它们的片段。为什么没有人隐藏/显示片段,有理由不这样做吗?假设我们有一个带有列表视图的片段,其中包含从数据库或其他昂贵任务收集的数据。那么显示/隐藏这些片段而不是替换它不是更好吗?

抱歉,这是我的第一个应用程序,我对这个话题真的很困惑,而且似乎没有关于它的官方建议,甚至 Material Design 指南也没有真正参考它。

你会怎么做?

4

1 回答 1

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)
}
于 2019-05-22T17:29:52.843 回答