【问题标题】:How to implement navigation with BottomNavigationView?如何使用 BottomNavigationView 实现导航?
【发布时间】:2021-02-15 10:56:00
【问题描述】:

我的应用程序有 4 个屏幕:登录主页个人资料设置登录 是开始屏幕。然后是 Main 屏幕,BottomNavigationView 在其中切换 3 个其他屏幕。我制作了 2 个导航图:第一个用于 Login-Main 片段,第二个用于 Home-Profile-Settings 片段。第二张图附在BottomNavigationView 上。而且效果很好。

bottomNavigationView = findViewById(R.id.bttm_nav);
NavHostFragment navHostFragment = (NavHostFragment)getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
NavigationUI.setupWithNavController(bottomNavigationView, navHostFragment.getNavController());

但是当我想注销并从 Profile 导航回到 Login 时,我不能这样做,因为这些是不同图表的片段。我该如何实现这个逻辑? 我想我需要将我的导航合并到一个图表中。

如果您分享一些具有类似流程的代码,我将不胜感激。

【问题讨论】:

  • 为什么需要两张图?

标签: android navigation uinavigationcontroller android-architecture-navigation


【解决方案1】:

我在注销场景中的建议是有

  1. main_graph:充当协调器
  2. logged_out_graph:包含未经身份验证的用户可以访问的所有片段
  3. a logged_in_graph:包含经过身份验证的用户可以访问的所有片段

为了从logged_in_graph 移动到logged_out_graph,您可以使用在main_graph 中定义的全局操作,例如:

<action
            android:id="@+id/action_global_logged_out_graph"
            app:destination="@id/logged_out_graph"
            app:launchSingleTop="true"
            app:popUpTo="@+id/main_graph"
            app:popUpToInclusive="true" />

使用片段NavController 以编程方式在logged_in_graph 的片段中调用操作:

findNavController().navigate(R.id.action_global_logged_out_graph)

【讨论】:

    猜你喜欢
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多