【发布时间】:2020-01-03 17:36:17
【问题描述】:
活动:
supportFragmentManager.beginTransaction()
.replace(R.id.container, Fragment_1.newInstance())
.commitNow()
我的第一个片段:
activity.supportFragmentManager.beginTransaction()
.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out)
.replace(R.id.container, nextFrag, "Fragment_2")
.addToBackStack(null)
.commit()
按下后退按钮会打开第一个片段一秒钟,然后重新打开我要关闭的第二个片段。有人可以解释为什么会这样吗?我尝试覆盖后退按钮以弹出堆栈,但这似乎也不起作用。
override fun onBackPressed() {
super.onBackPressed()
supportFragmentManager?.popBackStack()
}
[编辑] 好的,经过一番调查,问题根本不是来自碎片。问题来自视图模型观察者在返回 Fragment_1 时重新执行。
viewModel.error.observe(this, Observer {
viewModel.goFragment_2(activity!!)
})
我不确定为什么这个观察者会重新执行...
【问题讨论】:
-
代替
activity.supportFragmentManager尝试使用childFragmentManager
标签: android android-fragments kotlin navigation fragment