Sobes.tech
Middle

რა განსხვავებაა add და replace მეთოდებს შორის?

sobes.tech AI

პასუხი AI-სგან

ფრაგმენტებთან მუშაობისას add და replace მეთოდებს შორის განსხვავება შემდეგია:

  • add: ახალი ფრაგმენტი დამატებულია არსებული ზედა. წინა ფრაგმენტები რჩება ბექსტეკში (თუ გამოიძახა addToBackStack) და მათი სიცოცხლის ციკლი შეჩერებულია (PAUSED).
  • replace: წაშლის წინა ფრაგმენტს კონტეინერიდან და დამატებს ახალს მის ადგილზე. თუ წინა ფრაგმენტი იყო ბექსტეკში, ის კვლავ იქ იქნება და დაბრუნებისას კვლავ შექმნილი იქნება.

add-ის გამოყენების მაგალითი:

supportFragmentManager.beginTransaction()
    .add(R.id.fragment_container, NewFragment())
    .addToBackStack(null)
    .commit()

replace-ის გამოყენების მაგალითი:

supportFragmentManager.beginTransaction()
    .replace(R.id.fragment_container, NewFragment())
    .addToBackStack(null)
    .commit()

ძირითადი განსხვავებები შეიძლება მოკლედ იყოს მოცემული შემდეგი ცხრილში:

თვისება add replace
ხილვადობა ახალი ფრაგმენტი გადაფარავს ძველს ახალი ფრაგმენტი შეცვლის ძველს
წინა მდგომარეობა შეჩერებულია (PAUSED) ამოღებულია კონტეინერიდან, დაბრუნებისას კვლავ შექმნილი იქნება
უკან დაბრუნების სტეკი წინა ფრაგმენტი რჩება სტეკში წინა ფრაგმენტი ამოღებულია კონტეინერიდან, მაგრამ შეიძლება იყოს სტეკში
შესრულებადობა ნაკლებად ეფექტური შეიძლება იყოს ბევრი ფრაგმენტით ჩვეულებრივ უფრო ეფექტურია ხშირი ცვლილებებით