有关Android中的NavController的理解问题

时间:2020-08-27 10:39:13

标签: android navigation android-jetpack

我刚开始在Android中使用Jetpack导航,但我有一个问题。我在实现View.OnClickListener

的Fragment中有以下方法
public void onClick(View view) {

    if(view.getId() == R.id.imageButton_Softdrinks_en) {

        int amount = 1;
        Menu_FragmentDirections.ActionMenuFragmentToSoftdrinks action = Menu_FragmentDirections
                .actionMenuFragmentToSoftdrinks(amount);

        Navigation.findNavController(view).navigate(action);



    }

}

基本上该方法有效,但我并不真正理解为什么。方法声明中的View应该是ImageButtons。使用命令:“ Navigation.findNavController(view)”时,Android搜索视图的Navcontroller。鉴于该视图是一个ImageButtom,所以我不明白为什么导航有效。 ImageButtoms没有NavController或NavHost。有人介意向我解释这一点。感谢您的每条评论,也非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以在Navigation.findNavController(View)层次结构中的任何View上调用View。然后,系统将遍历层次结构,直到找到父FragmentNavHostFragment)为止,然后它将找到NavHostFragment的NavController。