首页 > 解决方案 > 用片段替换底部导航视图

问题描述

我有带有 BottomNavigationView 的 MainActivity,如下所示:

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)
        navView.setupWithNavController(navController)
    }
}

此外,我在导航视图顶部有一个设置按钮。单击此按钮,我希望设置片段出现在导航片段的顶部并将其隐藏并全屏显示设置。

像这样:

val settingsFragment = SettingFragment.newInstance()
val fragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.addToBackStack(null)
fragmentTransaction.replace(/*what to user here*/, settings)
fragmentTransaction.commit()

标签: androidandroid-fragments

解决方案


这是解决方案:

val navHostFragment
        = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
navHostFragment.childFragmentManager
        .beginTransaction()
        .replace(navHostFragment.id, SettingsFragment())
        .addToBackStack(null)
        .commit()

推荐阅读