我有一个 FrameLayout 并使用底部导航视图,有 3 个片段的切换。单击该按钮时,将在主片段中创建 TextView。问题是,当从主片段切换到第二个片段并返回主片段时,创建的 TextView 消失了。可以怎样解决呢。也就是说,我需要 TextView 留在片段上
这是替换fragment的代码,它位于MainActivity中
fm = supportFragmentManager
binding.bottomNavigationView.setOnNavigationItemSelectedListener {
when(it.itemId){
R.id.roomsFragment -> {}
R.id.homeFragment -> {
fm.commit {
replace<HomeFragment>(R.id.framLayout)}
}
R.id.settingsFragment -> {
fm.beginTransaction().replace(R.id.framLayout, SettingsFragment.newInstance()).commit()
}
}
true
}
使用 MainActivity 进行替换,并且附加片段没有代码它是主片段
查看了一些代码后,我发现您创建了一个
menu
文件,一个 navigation
文件。
您基本上需要的是 navController
。
val navController = findNavController(R.id.mainContainer)
val bottomNavigationView = binding.bottomNavigationView
bottomNavigationView.setupWithNavController(navController)
另外,将以下行添加到
navigation host
文件中的 activity_main.xml
app:navGraph="@navigation/mobile_navigation"
完成所有设置后,您可以使用以下代码观察
navController
的更改:
navController.addOnDestinationChangedListener { controller, destination, bundle ->
when(destination.id) {
R.id.roomsFragment -> {}
R.id.homeFragment -> {}
R.id.settingsFragment -> {}
}
}