Подтвердить что ты не робот

Android - Общие переходы элементов с завершением активности вызова()

Я работаю над созданием приложения more Material, и я просто зациклился на том, как реализовать некоторые общие переходы элементов. У меня есть действие A, которое запускает другой B, а затем вызывает finish(), чтобы удалить его из заднего стека. В моем случае у меня есть элемент, который я хочу разделить между этими двумя действиями, но как только он передается от A до B, A больше не имеет значения. Если я не назову финиш() после startActivity (ctx, intent, bundle), анимация выхода/ввода работает отлично. Однако, если я назову финиш, там действительно уродливое мерцание перед началом анимации.

Есть ли что-то, что я пропускаю, или просто невозможно сделать то, что я пытаюсь сделать?

4b9b3361

Ответ 1

Вы можете завершить свою деятельность в функции onStop, если вы хотите, чтобы это произошло, когда вы переходите с A на B, затем создайте флаг и установите его после вызова startActivity (ctx, intent, bundle):

@Override
public void onStop() {
    super.onStop();
    if(mShouldFinish)
         finish();
}

Удостоверьтесь, что когда вы закончили работу B, чтобы вызвать finish(), а не finishAfterTranstion(), поскольку активность A больше не существует

После завершения операции A общий элемент в B может зависать на экране, если вы нажмете назад. Установите для параметра transitionName значение null в ActivityB.onEnterAnimationComplete, чтобы избежать этого.

Ответ 2

ОБНОВЛЕНИЕ

Гораздо лучший и простой способ

ActivityCompat. finishAfterTransition(this);

< 3 библиотека поддержки.

Ответ 3

Попробуйте метод finishAfterTransition() в 5.0 и выше, вы можете закончить действие после перехода на выход.

Ответ 4

Возможно, это было поздно, но у меня была такая же проблема. Что для меня работало:

supportFinishAfterTransition();

Это включено в библиотеку поддержки и работает как прелесть.

PS: вам не нужно вызывать finish() при вызове supportFinishAfterTransition().