使用NavController导航时的Fragment标记名称

7
使用导航架构时,是否可以显式地给要导航到的片段指定片段标记名称,以便如果需要在返回堆栈上执行某些操作,则可以稍后引用它们? 我指的是像这样的导航调用:NavController.navigate(R.id.exampleFragment)
如果不可能的话,NavController.navigate()添加到返回堆栈中的片段默认标记名称是什么?
1个回答

0

如果您正在使用导航组件,应避免使用与片段相关的对象,如tagfragmentManagerfindFragmentByTag/IdsetTargetFragment等。

因此,您应该使用导航组件提供的工具,如NavControllerNavDestinationBackStackEntry和其SavedStateHandle

要对它们进行操作,您应该在后退栈中找到它,并在其savedStateHandle上设置一个值:

例如,A打开B,然后B打开C,现在C想将一些内容传递给A。

// in C:
findNavController().getBackStackEntry(R.id.a)
         .savedStateHandle
         .set("Key","Value")


// in A: 
findNavController().getBackStackEntry(R.id.a)
         .savedStateHandle
         .get<String>("Key") // or getLiveData<String>("Key").observe(...)

最后:

NavController.navigate() 添加到返回堆栈的片段的默认标签名称是什么?

它不使用片段标签。因此所有片段标签都为 null


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接