Снова здравствуйте, переполнение стека. У меня есть еще один фрагмент вопроса. (Я использую android.app.Fragment, а не поддерживаю фрагменты)
Я пытаюсь заменить фрагмент. Но это не так просто, как использование:
fragmentTransaction
.replace(containerId, newFragment)
.addToBackStack("unique tag")
.commit()
Почему бы и нет? Хороший вопрос, друзья, потому что у моего newFragment
есть анимация перехода.
Где определена анимация? Еще один отличный вопрос, он определен во фрагментах onCreateAnimator().
Почему это определено там? Длинный ответ на вопрос, почему можно найти: Неправильный переход вложенных фрагментов. А пока вам нужно верить, что именно так все должно быть сделано в моем проекте.
Что делает анимация? Простая прокрутка от края экрана к его центру, полностью закрывающая исходный фрагмент. Имейте в виду, что в этом сценарии старый фрагмент просто остается на месте. Он имеет эффект анимации, чтобы не двигаться.
В чем проблема?
Проблема в том, что newFragment имеет более низкое значение высоты (или z?), чем старый. Таким образом, переход нельзя наблюдать, потому что старый фрагмент находится над новым фрагментом. По достижении конца анимации вы видите, как новый фрагмент мигает над старым. Я ожидал, что newFragment закроет старый с самого начала анимации.
Почему бы не использовать add? Кажется, это создает больше проблем, так как у меня есть много фрагментов, которые я хочу поменять местами в представлении и из него. Использование add, кажется, запускает их анимацию выхода в следующий раз, когда я использую replace, даже если перед ним есть 1... n фрагментов. Они также не останавливаются.
Почему бы не установить высоту? Потому что я поддерживаю API 19, у которого нет свойства высоты.
Почему бы не использовать ViewCompat.setElevation() для API 19? Я попробовал и получил те же неудачные результаты.
Кто-нибудь нашел способ обойти эту проблему?
setReorderingAllowed(false)
до совершения транзакции? - person azizbekian   schedule 02.11.2017setAllowOptimization(false)
. - person azizbekian   schedule 02.11.2017onCreateAnimator
и определения анимации. - person artkoenig   schedule 15.11.2017