Android 带底部导航视图和导航组件的反向导航

Android 带底部导航视图和导航组件的反向导航,android,bottomnavigationview,android-architecture-navigation,Android,Bottomnavigationview,Android Architecture Navigation,我有一个底部导航视图,有3个入口点(片段a、B和C),每个入口点都可以移动到其他片段(a->D、B->E、C->F)。为了导航,我使用了架构导航组件。 我希望当用户在A、B或C中,按下后退按钮时,应用程序退出。如果他在D、E或F,他应该分别去A、B或C 根据文档,在菜单和导航图中使用相同的ID是设置视图和导航组件的方法 我知道我可以覆盖导航并自己处理以实现我想要的,或者覆盖后退按钮。但我想知道是否有一种方法可以实现所需的行为,而不必手动处理(毕竟,这就是使用导航组件的意义)。有没有办法做到这一点

我有一个底部导航视图,有3个入口点(片段a、B和C),每个入口点都可以移动到其他片段(a->D、B->E、C->F)。为了导航,我使用了架构导航组件。 我希望当用户在A、B或C中,按下后退按钮时,应用程序退出。如果他在D、E或F,他应该分别去A、B或C

根据文档,在菜单和导航图中使用相同的ID是设置视图和导航组件的方法

我知道我可以覆盖导航并自己处理以实现我想要的,或者覆盖后退按钮。但我想知道是否有一种方法可以实现所需的行为,而不必手动处理(毕竟,这就是使用导航组件的意义)。有没有办法做到这一点

另外,我想用安卓系统在材料设计中达到预期的效果吗?据我所知是这样,但我在材料设计文档中找不到。我尝试过几个应用程序,我看到了不同的行为(推特、地图和gmail不退出应用程序,但任务或保持退出),因此,我认为这两种行为都是可以接受的。

这两种行为是由谷歌的Material和Android UX团队专门设计的,作为应用程序的设计方式,以防止对后退按钮的功能产生混淆:

此[开始]目的地也是用户在按下后退按钮后返回发射器时看到的最后一个屏幕

这可以确保用户知道,在应用程序的任何其他屏幕上,后退按钮不会将他们踢出应用程序。相反,该开始目的地作为一个标志杆向用户显示,按下系统后退按钮将把他们踢回启动器

因此,当使用
NavigationUI
帮助程序时,您将始终通过图形的开始目标退出(即
A
屏幕)


导航有一个单独的概念,称为,它只控制是否显示应用程序栏上的向上箭头。这允许多个顶级目的地(例如,您的A、B和C)从用户的角度显示在同一层次上,同时仍然符合通过起始目的地退出的系统返回原则。

明确指出,您应该始终退出图形的起始目的地(例如,您的A屏幕)。您是否特别询问如何不遵循导航原则?在本例中,我们讨论的是同一根级别的多个屏幕,因此我希望它们都退出。正如我所提到的,任务(从一个列表更改为另一个列表时)和保持(从任务更改为提醒)-谷歌应用程序-做到这一点。谢谢你的回答。然后,为了确保我正确理解,在任务和保留中执行的行为违反了导航原则?在任务中,如果你从一个列表更改为另一个列表并按“上一步”,则退出应用程序。在保留中,如果你从注释转到提醒并按“上一步”,则退出应用程序。根据通常,将谷歌应用程序视为一个光辉的例子是一个错误的想法(他们都是独立的团队,拥有独立的目标和优先级)。任务的开始目标(他们的“片段a”)是一个任务列表。用另一个实例替换a的一个实例仍然意味着他们通过开始目标退出应用程序(这与您的用例底部导航完全不同)。Keep在Notes屏幕中确实有一个强大的开始目标,因此提醒、存档和其他标签之间的一致性对于他们来说似乎是一个很好的反馈。