【问题标题】:Conditional Navigation in Android Navigation ComponentAndroid导航组件中的条件导航
【发布时间】:2019-03-27 08:20:25
【问题描述】:

我有 3 个片段 A、B 和 C,其中 A 是我的导航图的起始目的地。当用户启动应用程序时,如果有以前存储的结果,我会检查片段 A。如果有,我想直接导航到片段 C。我已经设法让它工作。但是,在这种情况下,当用户按回片段 C 时,我希望他们被带到片段 B 而不是 A,这就是我需要帮助解决的问题。

注意: Fragment A 只是一个设置片段,仅在应用启动时访问一次。这意味着当用户从片段 B 按下返回时,他们将被带到操作系统主屏幕。

【问题讨论】:

    标签: android android-architecture-navigation


    【解决方案1】:

    您可以覆盖onBackPress() 并像这样用 FragmentB 替换您所在的任何片段

      @Override
    public void onBackPressed() {
        int stackCount = getFragmentManager().getBackStackEntryCount();
        if (stackCount == 1) {
            super.onBackPressed(); // if you don't have any fragments in your backstack yet.
        } else {
        // just replace container with fragment as you normally do;
    
        FragmentManager fm = getFragmentManager();
        fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);//clear backstackfirst and then you can exit the app onbackpressed from home fr
        FragmentTransaction transaction = fm.beginTransaction();
        transaction.replace(R.id.container, new FragmentB());
        transaction.commit();
        }
    }
    

    这是原答案,你可以看看answer by Rainmaker

    【讨论】:

      【解决方案2】:

      您可以覆盖片段 C 上的 onBackPressed 并调用 navController 以返回片段 b,创建从 C 到 B 的新操作

      navController.navigate(R.id.action_CFragment_to_BFragment)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 2020-04-12
        • 1970-01-01
        相关资源
        最近更新 更多