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) Հեռացվում է կոնտեյներից, վերադարձի ժամանակ նորից ստեղծվում
Վերադարձի բեքստեկ Նախորդ ֆրագմենտը մնում է բեքստեկում Նախորդ ֆրագմենտը հեռացվում է կոնտեյներից, բայց կարող է լինել բեքստեկում
Արդյունավետություն Կարող է լինել ավելի քիչ արդյունավետ շատ ֆրագմենտների դեպքում Ընդհանուր առմամբ ավելի արդյունավետ հաճախակի փոփոխությունների ժամանակ