如何在 Activity 中使用 findNavController()

Pal*_*red 5 android

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

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)**
                }
            }
        })
Run Code Online (Sandbox Code Playgroud)

我希望输出改变 ID 中的片段sum_to_report

小智 6

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

NavHostFragment.findNavController(Fragment)
Navigation.findNavController(Activity, @IdRes int viewId)
Navigation.findNavController(View)
Run Code Online (Sandbox Code Playgroud)

检索到 后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)

Run Code Online (Sandbox Code Playgroud)

  • 我想,问题是如何获取 View/ViewId (6认同)