どこでも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);
}
...
}