Если я добавлю новую транзакцию (добавление фрагмента, не удаляя) в backstack фрагмента, будут ли скопированы или использованы объекты фрагмента в предыдущей транзакции - PullRequest
0 голосов
/ 25 сентября 2018

Итак, скажем, для моей первой транзакции я добавляю фрагмент A, добавляю в backstack и фиксирую.

Для моей второй транзакции я добавляю фрагмент B, добавляю в backstack и фиксирую.

В этот момент после моей второй транзакции у меня уже есть Фрагмент A и Фрагмент B.Фрагмент A все еще ссылается на тот же фрагмент Фрагмент A объект, который я создал в первой транзакции, или его копию?

Я где-то читал, говоря, что после каждой транзакции создается снимок фрагментов, и он имеет смыслмне, если существующие фрагменты будут скопированы, чтобы старые снимки не испортились новыми.

Как это работает точно?

1 Ответ

0 голосов
/ 25 сентября 2018

A FragmentTransaction, который использует addToBackStack, записывает только минимальную информацию об операции - в вашем случае, добавляемый фрагмент и тот факт, что это была операция добавления.FragmentManager абсолютно не делает никаких типов снимков.

Это используется двумя способами:

  1. Для выполнения FragmentTransaction.Операция добавления не влияет на другие фрагменты (поэтому фрагмент A не изменяется при добавлении фрагмента B).
  2. Когда вы вставляете задний стек (т. Е. Нажимаете кнопку возврата системы), операция переворачивается- операция добавления становится операцией удаления.Для операции «удалить» другой фрагмент не изменяется (поэтому фрагмент А все еще существует, когда вы щелкаете фрагмент Б)

Конечно, другие операции, такие как «замена», влияют на два фрагмента (вы можетевоспринимайте это как «удаление» старого фрагмента и «добавление» нового фрагмента).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...