Может кто-нибудь объяснить, почему этот код не работает?Android заменить фрагмент на существующую версию
Fragment f = fragmentManager.findFragmentByTag(tag);
if (f == null) {
fragmentManager.beginTransaction().replace(R.id.protokoll_content, fragment, tag).commit();
} else {
fragmentManager.beginTransaction().replace(R.id.protokoll_content, f).commit();
}
Я не думаю, что вам нужно гораздо больше, чтобы получить то, что я пытаюсь сделать, и я не думаю, что остальная часть кода имеет отношение к этой проблеме. Я точно знаю, что 99% это зона проблем.
Я просто пытаюсь загрузить существующую версию фрагмента, вызвав ее своим тегом.
На мой взгляд, приведенный выше код будет выполняться следующим образом:
IF (фрагмент не имеет существующего экземпляра) {создать новую с уникальным тэгом и заменить существующие фрагменты в контейнере с ним}
ИНАЧЕ (фрагмент ДЕЙСТВИТЕЛЬНО есть существующий экземпляр) {нагрузка, что существующие версии вместо создания нового и заменить текущий фрагмент с найденным существующего фрагментом}
Редактировать
Немного обновленный код. Та же проблема, новые фрагменты создаются вместо существующих экземпляров загружаемых фрагментов.
Разъяснение
Новые фрагменты сделаны каждый раз, вместо того, чтобы существующие получения загружены. Если я что-то напишу, перейдите к новому фрагменту, а затем попытайтесь вернуть старый фрагмент, весь текст будет очищен, потому что новые фрагменты создаются вместо старых загружаемых.
вы отлажена для значения тега ?? –
Возможный дубликат [Android заменить текущий фрагмент другим фрагментом] (http://stackoverflow.com/questions/8163104/android-replace-the-current-fragment-with-another-fragment) –
ваше условие 'if' говорит если фрагмент нулевой, вы загружаете «нулевой фрагмент». что именно вы делаете. ? 'fragmentManager.beginTransaction(). replace (R.id.activity_content, fragment, tag) .commit();' – Bharatesh