Android导航组件中的条件导航

时间:2019-03-27 08:20:26

标签: android android-architecture-navigation

我有3个片段A,B和C,其中A是导航图的起始目的地。当用户启动该应用程序时,我检入片段A是否存在先前存储的结果。如果有的话,我想直接导航到片段C。我设法使它起作用。但是,在这种情况下,当用户按回片段C时,我希望将它们带入片段B而不是片段A,这就是我需要弄清楚的地方。

enter image description here

注意:片段A只是一个设置片段,只有在应用启动时才被访问一次。这意味着,当用户从片段B按下时,它们将被带到OS主屏幕。

2 个答案:

答案 0 :(得分:0)

您可以覆盖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

答案 1 :(得分:0)

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

navController.navigate(R.id.action_CFragment_to_BFragment)