View.findNavController () против Fragment.findNavController () - PullRequest
0 голосов
/ 08 сентября 2018

В любом месте в NavHostFragment я могу сделать findNavController().navigateUp()

Или, если в моем Фрагменте у меня есть кнопка для навигации, я могу сделать следующее:

editButton.setOnClickListener { v ->
    v.findNavController().navigateUp()
}

или

editButton.setOnClickListener {
    findNavController().navigateUp()
}

Зачем мне использовать одну функцию расширения по сравнению с другой при настройке прослушивателя нажатия кнопки во фрагменте?

1 Ответ

0 голосов
/ 08 сентября 2018

Они почти одинаковые, 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);
    }
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...