1

У меня есть два действия и переход слайдов между ними. Достаточно просто. Но по какой-то причине ActivityOptions.makeSceneTransitionAnimation(Activity), похоже, создает пустую активность в стеке. Вернее, он сохраняет мою первоначальную активность в стеке, но исключает корневой вид, поэтому он выглядит как пустая активность.ActivityOptions.makeSceneTransitionAnimation создает пустую активность

Я использую самый ванильный способ создания перехода сцены из документов. Я не совсем уверен, почему это проблема, если это не известная проблема. Кто-нибудь еще испытывает это? Если да, исправите ли вы это?

public void startSearchActivity(MenuItem view) { 
    Intent searchActivity = new Intent(this, SearchActivity.class); 
    ActivityOptions transitionActivityOptions = ActivityOptions.makeSceneTransitionAnimation(HomeActivity.this); 
    startActivity(searchActivity, transitionActivityOptions.toBundle()); 
} 

private void setupWindowAnimations() { 
    Transition slide = new Slide(); 
    slide.setDuration(1000); 
    ((Slide)slide).setSlideEdge(Gravity.LEFT); 
    getWindow().setEnterTransition(slide); 
    getWindow().setReenterTransition(slide); 
    getWindow().setExitTransition(slide); 
} 

И тогда в деятельности № 2 я просто позвонить либо закончить, onBackPressed или finishFromTransition. Ни один из них, похоже, не возвращает меня к первоначальной активности, которую я имел в стеке. Если я вернусь из операции № 2, то будет активирован действие №#. Но это так, как будто он никогда не получал свой набор контента или любое его представление инициализировано. Если я снова запустил приложение, в исходном действии будет вызван onCreate, который повторно связывает и выдает представления.

Еще одно замечание заключается в том, что при вводе этого пустого действия не отображаются кнопки «назад», «домашний» и «повторы» андроида. На самом деле, единственное, что похоже на сохранение моего приложения, - это цвет строки состояния.

ОБНОВЛЕНИЕ: Я заметил, что если я не позволю перейти к завершению и вернусь. Он вернется к моей предыдущей деятельности просто отлично. Только когда переход завершается, и я перехожу к следующему действию, в котором я сталкиваюсь с проблемами.

+1

У меня такая же проблема. Следующий. – BajaBob

+0

у меня тоже есть проблема в Api 19 –

ответ

0

Wow ... Я понял. Оказывается, сейчас это не под контролем. Это проблема с api 24+. Я посмотрел на makeSceneTransition, и у него есть отдельная логика для этих apis (конечно). Это очень огорчает. Надеюсь, Google скоро исправит эту проблему.

0

Попробуйте это.

  1. Создайте папку «anim» в каталоге res /.

  2. Внутри папки Anim создать 2 макета файлов ресурсов с именем in_from_right.xml и out_from_left.xml

Добавьте следующий код in_from_right.xml:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate 
    android:fromXDelta="100%" android:toXDelta="0%" 
    android:fromYDelta="0%" android:toYDelta="0%" 
    android:duration="1000" /> 
</set> 

и ниже код out_from_left.xml:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false"> 
    <translate android:fromXDelta="0%" android:toXDelta="-100%" 
     android:fromYDelta="0%" android:toYDelta="0%" 
     android:duration="1000"/> 
</set> 

Теперь добавьте это в свой файл Activity.java

try { 
       Intent searchActivity = new Intent(this,SearchActivty.class); 

       searchActivty.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
       startActivity(searchActivty); 
      }catch (NullPointerException e){ 
       e.printStackTrace(); 
      } 
      overridePendingTransition(R.anim.in_from_right, R.anim.out_from_left); 

Просто не забудьте добавить папку с анимацией.

Он будет работать для вас.

Счастливое кодирование.

+0

спасибо. Мне хорошо известно, что overridePendingTransition. Однако это не то, что я пытаюсь выполнить. – cj1098

1

Выяснил это. В моем случае у меня были некоторые переходы, определенные в моих стилях.xml. Добавление большего количества анимаций в действие программно вызвало это поведение (пустая активность после нажатия кнопки возврата системы). Просто удалите все следы окна * Переход из ваших styles.xml, и вам должно быть хорошо идти.

<item name="android:windowEnterTransition">@transition/slide_from_right</item> 
    <item name="android:windowExitTransition">@transition/slide_from_right</item> 
+0

К сожалению, я спустился по этой аллее, и это не повлияло. Какую родительскую тему унаследовала ваша тема? В настоящее время у меня нет других переходов, кроме тех, которые я добавил программно – cj1098

+0

Я использовал темы на основе AppCompat, но поскольку мое приложение поддерживает Android 5.0 и выше, я решил удалить их. Вы настраиваете переход до super.onCreate()? – BajaBob

0

В моем случае я переписал неправильный метод onCreate для новой деятельности. После раздувания макета на другом методе onCreate все работало нормально :-)