Как отложить переход фрагмента в Android Lollipop?

В Android Lollipop методы Activity#postponeEnterTransition() и Activity#startPostponedEnterTransition() дают Деятельности возможность задержка, начинающаяся с переходов входов и выходов общего доступа до тех пор, пока не будут загружены все данные. Они отлично подходят для переходов Activity.

Есть ли способ достичь такого же эффекта при использовании переходов Fragment?

Ответ 1

Нет прямого эквивалента в переходах фрагментов, потому что Фрагменты используют FragmentTransaction, и мы не можем отложить то, что должно произойти в транзакции.

Чтобы получить эквивалент, вы можете добавить фрагмент и скрыть его в транзакции, а затем, когда фрагмент будет готов, удалите старый фрагмент и покажите новый фрагмент в транзакции.

getFragmentManager().beginTransaction()
    .add(R.id.container, fragment2)
    .hide(fragment2)
    .commit();

Позже, когда фрагмент2 готов:

getFragmentManager().beginTransaction()
    .addSharedElement(sharedElement, "name")
    .remove(fragment1)
    .show(fragment2)
    .commit();