N'importe où dans un NavHostFragment
je peux faire findNavController().navigateUp()
Ou, si dans mon fragment j'ai un bouton à utiliser pour la navigation, je pourrais faire soit:
editButton.setOnClickListener { v ->
v.findNavController().navigateUp()
}
ou
editButton.setOnClickListener {
findNavController().navigateUp()
}
Pourquoi devrais-je utiliser une fonction d'extension par rapport à l'autre lors de la configuration d'un écouteur de clic de bouton dans un fragment?
Ils sont presque les mêmes, Fragment.findNavController()
n'est qu'un raccourci pratique, il appelle en fait Navigation.findNavController(view)
à la fin. Les deux obtiennent le NavController
de la vue racine du fragment.
// NavHostFragment.Java
public static NavController findNavController(@NonNull Fragment fragment) {
....
View view = fragment.getView();
if (view != null) {
return Navigation.findNavController(view);
}
...
}