Android Fragments 有没有一种方法可以使用导航组件从回栈加载片段?

vdzxcuhz  于 9个月前  发布在  Android
关注(0)|答案(2)|浏览(84)

我有许多自定义选项卡,我希望NavController在用户在选项卡之间导航时从回退堆栈加载一个片段(如果存在)。
我检查返回堆栈中是否存在一个片段,如果不存在,我就导航到它。但是,当一个片段已经存在于返回栈时,我如何从返回栈加载它呢?

try {  //check if fragment exists in back stack
    navController.getBackStackEntry(R.id.myFragment);

    // what should I do here?
} catch (Exception e) {
    navController.navigate(R.id.action_to_myFragment);
}
sulc1iza

sulc1iza1#

试试popBackStack:

try {
  
    NavBackStackEntry entry = navController.getBackStackEntry(R.id.myFragment);

    if (entry != null) {
        // Pop fragments from the back stack 
        navController.popBackStack(entry.getDestination().getId(), false);
    } else {
      
        navController.navigate(R.id.action_to_myFragment);
    }
} catch (Exception e) {
    // Handle exceptions if necessary
}
bweufnob

bweufnob2#

如果你想在backstack上访问片段,你可以使用下面的代码。

findNavController().popBackStack(R.id.myFragment, false)

// argument false : inclusivity settings

相关问题