一個activity 多個fragment寫頁面

1. FragmentTransaction區(qū)別add和replace
  • 源碼中關(guān)于add的解釋


    截屏2023-03-08 14.40.59.png
  • 源碼中關(guān)于replace的解釋


    截屏2023-03-08 14.45.13.png

    和明顯,add是把fragment添加到容器中,replace是如果容器中有相同fragment的話,會先移除然后再添加,另外,如果使用add的話,需要配合hide一起使用,生命周期也會有很大不同當(dāng)使用replace的時候,onResume(),onPause(),onStop()這幾個方法會走一次之前的fragment,使用返回鍵的時候,onViewCreated()和onResume()也會執(zhí)行之前add進去的fragment,而使用add和hide()的時候,只會執(zhí)行當(dāng)前fragment的方法,不會執(zhí)行之前fragment的生命周期

2.addToBackStack()這個方法是返回之前fragment的回退棧

下面是一個acitcity中添加多個fragment的代碼:

class ThreeActivity : AppCompatActivity() {
    private  var TAG="TAG"
    private lateinit var binding: ActivityThreeBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding=ActivityThreeBinding.inflate(layoutInflater)
        setContentView(binding.root)
        initView()
    }
    private fun initView(){
        val fragmentOne=FragmentOne()
        supportFragmentManager.beginTransaction().replace(R.id.lv_fragment_container,fragmentOne).commit()
        binding.btBack.setOnClickListener {
            onBackPressed()
        }
    }
}
  override fun onBackPressed() {
        if (supportFragmentManager.backStackEntryCount<=0){
            finish()
        }else{
            supportFragmentManager.popBackStack()
        }
    }

fragment 的代碼

class FragmentOne:Fragment() {
    private  var TAG="TAG"
    private lateinit var binding: FragmentThreeBinding
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding=FragmentThreeBinding.inflate(inflater,container,false)
        return binding.root
    }

   
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        binding.tvTitle.text="FragmentOne"
        binding.btNext.setOnClickListener {
            val fragmentTwo=FragmentTwo()
            val fragmentTransaction = parentFragmentManager.beginTransaction()
            fragmentTransaction.addToBackStack(null)
            fragmentTransaction.replace(R.id.lv_fragment_container,fragmentTwo)
            fragmentTransaction.commit()
        }
    }
}
class FragmentTwo:Fragment() {
    private  var TAG="TAG"

    private lateinit var binding: FragmentThreeBinding
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding=FragmentThreeBinding.inflate(inflater,container,false)
        return binding.root
    }
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        binding.tvTitle.text="FragmentTwo"
        binding.btNext.setOnClickListener {
            val fragmentTwo=FragmentThree()
            val fragmentTransaction = parentFragmentManager.beginTransaction()
            fragmentTransaction.addToBackStack(null)
            fragmentTransaction.replace(R.id.lv_fragment_container,fragmentTwo)
            fragmentTransaction.commit()
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纸泡,一起剝皮案震驚了整個濱河市络凿,隨后出現(xiàn)的幾起案子龙优,更是在濱河造成了極大的恐慌孵运,老刑警劉巖卿叽,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異滋早,居然都是意外死亡榄审,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門杆麸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搁进,“玉大人浪感,你說我怎么就攤上這事”剩” “怎么了影兽?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長莱革。 經(jīng)常有香客問我峻堰,道長,這世上最難降的妖魔是什么驮吱? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任茧妒,我火速辦了婚禮,結(jié)果婚禮上左冬,老公的妹妹穿的比我還像新娘。我一直安慰自己纸型,他們只是感情好拇砰,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著狰腌,像睡著了一般除破。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上琼腔,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天瑰枫,我揣著相機與錄音,去河邊找鬼丹莲。 笑死光坝,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的甥材。 我是一名探鬼主播盯另,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼洲赵!你這毒婦竟也來了鸳惯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤叠萍,失蹤者是張志新(化名)和其女友劉穎芝发,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苛谷,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡辅鲸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了抄腔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓢湃。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡理张,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绵患,到底是詐尸還是另有隱情雾叭,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布落蝙,位于F島的核電站织狐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏筏勒。R本人自食惡果不足惜移迫,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望管行。 院中可真熱鬧厨埋,春花似錦、人聲如沸捐顷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽迅涮。三九已至废赞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叮姑,已是汗流浹背唉地。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留传透,地道東北人耘沼。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像旷祸,于是被迫代替她去往敵國和親耕拷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容