1

Ich habe zwei Aktivitäten und einen Folienübergang zwischen ihnen. Einfach genug. Aber aus irgendeinem Grund scheint ActivityOptions.makeSceneTransitionAnimation(Activity) eine leere Aktivität auf dem Stapel zu erstellen. Oder es behält meine ursprüngliche Aktivität auf dem Stapel bei, aber löscht die Stammansicht, sodass es wie eine leere Aktivität aussieht.ActivityOptions.makeSceneTransitionAnimation erstellt eine leere Aktivität

Ich verwende den meisten Vanilla-Weg, um einen Szenenübergang von den Dokumenten zu erstellen. Ich bin nicht ganz sicher, warum dies ein Problem ist, es sei denn, es ist ein bekanntes Problem. Hat das noch jemand anderes erlebt? Wenn ja, hast du es behoben?

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); 
} 

Und dann in Tätigkeit # 2 Ich rufe einfach entweder Finish, onBackPressed oder finishFromTransition. Keine davon scheint mich zu meiner ursprünglichen Aktivität auf dem Stapel zurückzubringen. Wenn ich von Aktivität # 2 zurück drücke, wird Aktivität # 1 onResume() aufgerufen..aber es ist, als ob es nie seinen Inhalt oder irgendeine seiner Ansicht initialisiert bekommen würde. Wenn ich die App erneut starte, wird die ursprüngliche Aktivität onCreate abgerufen, die Aufrufe erneut verbindet und weiterleitet.

Eine weitere seltsame Sache zu beachten ist, dass die Android-Soft "Zurück", "Home" und "recents" Schaltflächen nicht angezeigt werden, wenn Sie diese leere Aktivität eingeben. In der Tat ist das einzige, was aussieht, von meiner App beibehalten wird die Farbe der Statusleiste.

UPDATE: Ich habe festgestellt, dass wenn ich den Übergang nicht beenden, und drücken Sie zurück. Es wird gut zu meiner vorherigen Aktivität zurückkehren. Erst wenn der Übergang zu Ende ist und ich zur nächsten Aktivität übergehe, stoße ich auf Probleme.

+1

Ich habe das gleiche Problem. Folgend. – BajaBob

+0

Ich habe auch das gleiche Problem in Api 19 –

Antwort

0

Wow ... Ich habe es herausgefunden. Stellt sich heraus, dass es für jetzt außer Kontrolle ist. Es ist ein Problem mit api 24+. Ich schaute auf MakeSceneTransition und es hat separate Logik für diese Apis (natürlich). Das ist sehr entmutigend. Hoffentlich kann Google dieses Problem bald beheben.

0

Versuchen Sie es.

  1. Erstellen Sie einen Ordner "anim" in Ihrem Verzeichnis res /.

  2. Innerhalb des Anim Ordners 2 Layout-Ressource-Dateien namens in_from_right.xml erstellen und out_from_left.xml

den folgenden Code hinzufügen 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> 

und der folgende Code 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> 

Fügen Sie das jetzt zu Ihrer Activity.java-Datei hinzu

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); 

Vergessen Sie nicht, den Anim-Ordner hinzuzufügen.

Es wird für Sie arbeiten.

Glückliche Kodierung.

+0

Vielen Dank. Ich bin mir bewusst, overridePendingTransition. Das ist jedoch nicht das, was ich versuche zu erreichen. – cj1098

1

Ich habe es herausgefunden. In meinem Fall hatte ich einige Übergänge in meiner styles.xml definiert. Das Hinzufügen von weiteren Animationen zum Aktivitätsprogramm verursachte dieses Verhalten (leere Aktivität nach dem Drücken der System-Zurück-Taste). Entfernen Sie einfach alle Spuren von window * Transition aus Ihrer styles.xml und Sie sollten gut gehen.

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

leider ging ich diese Allee runter und es hatte keine Wirkung. Von welchem ​​Elternteil wird dein Thema geerbt? Ich habe derzeit keine anderen Übergänge definiert außer denen, die ich programmgesteuert hinzugefügt habe – cj1098

+0

Ich verwendete AppCompat-basierte Designs, aber da meine App Android 5.0 und höher unterstützt, entschied ich mich, sie zu entfernen. Richten Sie den Übergang vor super.onCreate() ein? – BajaBob

0

In meinem Fall überschrieb ich die falsche onCreate Methode für die neue Aktivität. Nach dem Aufblasen des Layouts auf der anderen onCreate Methode funktionierte alles gut :-)

Verwandte Themen