安卓 - 在片段上按后退按钮只是重新打开相同的片段



Activity:

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.beginTransaction()
.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out)
.replace(R.id.container, nextFrag, "Fragment_2")
.addToBackStack(null)
.commit()

在您的活动中使用。 我认为它会做得很好!

相关内容

  • 没有找到相关文章

最新更新