导航到BottomNavigationView上的特定片段

时间:2019-12-04 15:20:31

标签: android kotlin bottomnavigationview

我已经搜索了问题,但是找不到任何东西。让我描述一下我的问题。

我在BottomNavigationView上有3个按钮(主页,用户,历史记录)。然后在其他活动中,我有一个想要进入用户页面的按钮(当然带有BottomnavigationView。

我将向您展示我的代码。它仍然默认所有。我只是不知道如何导航到“用户”页面。

MainActivity.kt

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val navView: BottomNavigationView = findViewById(R.id.nav_view)
    val navController = findNavController(R.id.nav_host_fragment)
    // Passing each menu ID as a set of Ids because each
    // menu should be considered as top level destinations.
    val appBarConfiguration = AppBarConfiguration(
        setOf(
            R.id.navigation_home, R.id.navigation_user, R.id.navigation_notifications
        )
    )
    setupActionBarWithNavController(navController, appBarConfiguration)
    navView.setupWithNavController(navController)
}}

这是我的代码(来自其他片段)

otherFragment.kt

buttonRincian.setOnClickListener {
        // i dont know command to go to MainActivity with User page as default selected menu
    }

非常感谢您,我希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

创建一个接口,您的活动将实现该接口。 无论您要在何处更改片段,所有片段都应调用接口的方法。

类似

interface TabChangeListener {
    fun onTabChange(tabName : String)
}

活动代码

class Activity : AppCompatActivity(), TabChangeListener {
   override fun onTabChange(tabName : String) {
       //code to show different tabs
   }
}

片段代码

class Frag1 : Fragment {
   var listener : TabChangeListener
   //somewhere in the code
   listener.onTabChange("userTab")
}

别忘了从活动中获取Fragments中TabChangeListener的引用,否则回调将不起作用。