У меня есть два вида действий (A и B), и когда я нажимаю кнопку, элемент из A начинается анимированный переход на B. Однако я хочу отключить этот же переход, играющий назад при возвращении из B к A.Отмена перехода общего элемента
Прежде чем задать этот вопрос, я исследовал в Интернете и обнаружил, что существует два метода: setSharedElementReturnTransition(transition)
и setSharedElementReenterTransition(transition)
. Эти методы вызываются в соответствующих действиях onCreate()
метод с transition = null
, и это не сработало.
Только решение, которое я искал, для отмены перехода, было направлено finish()
в onBackPressed()
вместо super.onBackPressed()
. Есть ли другой способ достижения желаемого поведения?
Подводя итог, когда я устанавливал обратные переходы к нулю, ничего не менялось - переход не был отменен.
Edit 1. Вот код:
ActivtyA.java
public class ActivityA {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_A);
}
...
@Override
public void onPersonalProfileEditIconClicked() {
Intent intent = new Intent(ActivityA.this, ActivityB.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
View sharedView = avatarView;
String sharedElementName = getString(R.string.profile_avatar);
ActivityOptions transitionActivityOptions = ActivityOptions.makeSceneTransitionAnimation
(ActivityA.this, sharedView, sharedElementName);
startActivity(intent, transitionActivityOptions.toBundle());
} else startActivity(intent);
}
}
ActivityB.java
public class ActivityB {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_B);
}
...
@Override
public void onBackPressed() {
finish();
}
}
В файлах XML (activity_A и activity_B) SharedView есть свойство transitionName.
themes.xml
<resources>
<style name="theme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:windowActionModeOverlay">true</item>
<item name="android:windowContentTransitions">true</item>
</style>
</resources>
Я также сталкиваюсь с таким же вопросом и для меня, что я сделал 'послевкусие()' в 'onBackPressed()' – AJay
Пожалуйста, поделитесь кодом –
@AJay спасибо за ответ. Я уже это сделал, но это не решение. –