我的 Kotlin 代碼中有兩個片段。當我按下一些按鈕時,第一個片段將膨脹第二個片段。顯示第二個片段并且一切正常,但是當我按下后退按鈕時,電話將轉到主頁(應用程式已最小化),當我單擊最近查看的應用程式打開所有打開的應用程式時螢屏并選擇我的應用程式(即已打開),然后該應用程式回傳到它假設的 Fragment Alike。
但是我不明白為什么當我單擊后退按鈕時應用程式被最小化?我只是想讓它回到片段 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()
}
}
我沒有看到這里有什么不尋常的地方,一切都很好,但是當我從第二個片段轉到第一個片段時,它只是最小化我的應用程式......(第一個插入到主活動中,就像你看到的那樣當有人點擊我的代碼中的某些內容時,我只是將第一個片段與第二個片段交換......)
謝謝!!!
uj5u.com熱心網友回復:
你需要呼叫addToBackstack的FragmentTransaction(就像你在第二個例子中做的)。這使您要執行(替換片段當前事務一個與乙堆疊上)一個新的狀態。然后,當用戶回擊時,該狀態可以被彈出并反轉事務,因此您回到了片段A的位置。
如果您不將交易添加到 backstack,它將成為最近狀態的一部分,也就是您添加A 時- 該狀態變為“添加 A 然后將其替換為 B”,當您將其彈出時,它回到“在你添加 A 之前”
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/379345.html
