private fun navBottomClick() {
bottomNavigationView?.setOnItemSelectedListener {
when(it.itemId){
R.id.workout ->{
val fragmentTransaction:FragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.container,WorkoutFragment(),"WORKOUT")
//fragmentTransaction.addToBackStack("WORKOUT")
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
fragmentTransaction.commit()
}
R.id.steps ->{
intent = Intent(this,StepsActivity::class.java)
startActivity(intent)
}
}
true
}
}
override fun onBackPressed() {
super.onBackPressed()
}
}
當我按下時,我的應用程式已關閉。我想讓它從一個片段變成主要的活動。
uj5u.com熱心網友回復:
你誤解了 Fragments 和 Activity 的概念。您面臨的應用程式越來越接近從片段導航回來的問題,因為它是堆疊中存在的最后一個片段。
概念: 基本上,一個 Activity 充當所有 Fragment 的容器。因此,您創建一個活動并在該活動中創建一個 Fragment-Container / FrameLayout,您可以在其中分配片段。所以,考慮這個例子:

在這里你可以看到,有兩個片段,它們都只放在一個 Activity 中。所以這澄清了 Activity 充當 Fragments 的容器。
是什么導致應用程式問題被關閉: 那么當您從最后一個片段導航回來時會發生什么,因為它沒有任何地方可以回傳它關閉應用程式。
解決方案: 因此,如果您想讓 Activity 在最后一個 Fragment 上導航回 Activity,那么您需要覆寫最后一個 Fragment 上的 popBackStack() 方法,并且在那里您需要禁用 FragmentContainer / FrameLayout 視圖,在此您可以恢復活動的方式。推薦的解決方案:將您想要在最后顯示的所有內容從您的 Activity 移動到另一個 Fragment 并將 popBackStack() 移動到該 Fragment,這樣做維護了 Single Activity 原則。
uj5u.com熱心網友回復:
您應該有一個 popbackstack 來正確發送螢屏。檢查您的片段是否已在此活動中實作,如果是,則真的會關閉。不要忘記片段在一個活動中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/379343.html
