【发布时间】:2019-10-05 19:04:38
【问题描述】:
我试图在两个 fragments 之间移动而不重新创建它们,因此前一个片段中的数据不会消失。
我试图在互联网上寻找答案并尝试了几个小时但没有成功。我查看了这些链接:
在show() 和hide() 之后,我也尝试了AddToBackStack(),但没有成功
class MainActivity : AppCompatActivity(){
private val onNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
@Override
when (item.itemId) {
R.id.navigation_home -> {
//replaceFragment(SignInFragment())
supportFragmentManager.beginTransaction().hide(AllEventsFragment()).commit()
supportFragmentManager.beginTransaction().show(SignInFragment()).commit()
return@OnNavigationItemSelectedListener true
}
R.id.navigation_events -> {
//replaceFragment(AllEventsFragment())
supportFragmentManager.beginTransaction().hide(SignInFragment()).commit()
supportFragmentManager.beginTransaction().show(AllEventsFragment()).commit()
if (currentUser.isNotEmpty()) {
updateRecyclerView()
sign_in_error?.visibility = View.INVISIBLE
}
return@OnNavigationItemSelectedListener true
}
}
return@OnNavigationItemSelectedListener false
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
supportFragmentManager.beginTransaction().add(R.id.activity_main, AllEventsFragment(), "2").commit()
supportFragmentManager.beginTransaction().add(R.id.activity_main, SignInFragment(), "1").commit()
val navView: BottomNavigationView = findViewById(R.id.nav_view)
navView.setOnNavigationItemSelectedListener(onNavigationItemSelectedListener)
personInEvent = false
}
结果是重叠的片段没有真正在它们之间导航的选项。我真的尝试了所有我知道的东西,互联网上有一些答案,但没有一个能帮助我解决我的问题。对于这个令人沮丧的问题,我非常感谢您的帮助。
【问题讨论】:
标签: android android-fragments kotlin android-navigation-bar