我可以在NavHostFragment
中的任何地方执行findNavController().navigateUp()
或者,如果在“片段”中有一个用于导航的按钮,则可以执行以下任一操作:
editButton.setOnClickListener { v ->
v.findNavController().navigateUp()
}
要么
editButton.setOnClickListener {
findNavController().navigateUp()
}
在Fragment中设置按钮单击侦听器时,为什么要使用一个扩展功能而不使用另一个扩展功能?
最佳答案
它们几乎相同,Fragment.findNavController()
只是一个方便的快捷方式,它实际上在最后调用Navigation.findNavController(view)
。他们两个都从片段的根视图获取NavController
。
// NavHostFragment.java
public static NavController findNavController(@NonNull Fragment fragment) {
....
View view = fragment.getView();
if (view != null) {
return Navigation.findNavController(view);
}
...
}