如何在Activity中使用findNavController()

时间:2019-07-17 09:05:03

标签: android

我想通过使用导航组件来更改片段,但是我想从活动中更改片段。如何从活动中更改片段?

tab_layout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
            override fun onTabReselected(p0: TabLayout.Tab?) {

            }

            override fun onTabUnselected(p0: TabLayout.Tab?) {

            }

            override fun onTabSelected(p0: TabLayout.Tab?) {
                if (tab_layout.selectedTabPosition == **Summary_Fragment().findNavController().navigate(R.id.sum_to_report)**
                }
            }
        })

我希望输出更改ID为sum_to_report的片段

1 个答案:

答案 0 :(得分:0)

NavController用于从一个目的地导航到另一目的地,可以通过以下一种静态方法进行检索:

NavHostFragment.findNavController(Fragment)
Navigation.findNavController(Activity, @IdRes int viewId)
Navigation.findNavController(View)

检索NavController后,使用navigate()方法导航到目的地。 navigate()方法接受资源ID。该ID可以是导航图中特定目的地的ID,也可以是动作的ID。使用操作的ID,而不是目标的资源ID。 例如,


Navigation.findNavController(this, R.id.my_nav_host_fragment).navigate(R.id.action_navigationFragment_to_blankFragment)