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