返回从片段B到片段A不起作用Kotlin



我的Kotlin代码中有两个片段。当我按下一些按钮时,第一个碎片会使第二个碎片膨胀。第二个片段会显示出来,一切都很好,但当我按下后退按钮时,手机会转到主页(应用程序被最小化(,当我点击最近查看的应用程序,打开屏幕上所有打开的应用程序并选择我的应用程序(已打开(时,应用程序会像预期的一样返回到片段

但我不明白为什么当我点击后退按钮时,应用程序会最小化?我只想让它回到片段A,不要最小化应用程序。

这是膨胀第二个片段的代码:

val fragment2 = details_frag()
val fragmentManager: FragmentManager? = fragmentManager
val fragmentTransaction: FragmentTransaction =
fragmentManager!!.beginTransaction()

if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
fragmentTransaction.apply {
replace(R.id.fragSec, fragment2)
commit()
}
} else {
fragmentTransaction.apply {
replace(R.id.flFragment, fragment2)
commit()
}
}

主活动中对第一个片段进行充气的代码是:

if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
supportFragmentManager.beginTransaction().apply {
replace(R.id.fragLand, firstFrag)
commit()
}
supportFragmentManager.beginTransaction()
.add(
R.id.fragSec,
details_frag::class.java,
null
) //    .addToBackStack(null)
.commit()

} else {
supportFragmentManager.beginTransaction().apply {
replace(R.id.flFragment, firstFrag)
commit()
}
}

我在这里没有看到什么异常,一切都很好,但当我从第二个片段到第一个片段时,它只是最小化了我的应用程序。。。(正如你所看到的,第一个片段插入主活动中,当有人点击我代码中的某个内容时,我只是将第一个片段与第二个片段交换…(

谢谢!!!

您需要在FragmentTransaction中调用addToBackstack(就像您在第二个示例中所做的那样(。这使得您正在执行的当前事务(用B替换片段A(成为堆栈上的新状态。然后,当用户进行反击时,可以弹出该状态并反转事务,因此您将返回片段A

如果您不将事务添加到后台,它将成为最新状态的一部分,也就是说,当您添加A时,该状态将变为"添加A然后用B"代替;,当你把它关掉时,它又回到了";在添加A"之前;

相关内容

  • 没有找到相关文章

最新更新