Fragment Transaktionen mit Übergang – Einzigartige Übergangsnamen sind erforderlich

Ich möchte von einer OnClickListener zur Detailansicht gehen und deshalb verwende ich folgendes OnClickListener in meiner Liste:

 @Override public void onClick(View view) { Bet bet = (Bet)view.getTag(); FragmentManager fm = getActivity().getSupportFragmentManager(); BetDetailFragment f = BetDetailFragment.create(bet); String tag = f.getClass().getName(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { setSharedElementReturnTransition(TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.move)); f.setSharedElementEnterTransition(TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.move)); } FragmentTransaction ft = fm.beginTransaction() .replace(R.id.frame_container, f, tag) .addToBackStack(tag); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Ld(this, "TRANS: " + TransitionUtil.getTransitionNameBetLogo1(bet) + "|" + view.findViewById(R.id.ivLogo1)); Ld(this, "TRANS: " + TransitionUtil.getTransitionNameBetLogo2(bet) + "|" + view.findViewById(R.id.ivLogo2)); ft.addSharedElement(view.findViewById(R.id.ivLogo1), "1");//TransitionUtil.getTransitionNameBetLogo1(bet)); ft.addSharedElement(view.findViewById(R.id.ivLogo2), "2");//TransitionUtil.getTransitionNameBetLogo2(bet)); } ft.commit(); } 

Meine Funktionen geben einzigartige Namen zurück, ich habe zwei verschiedene Ansichten, aber trotzdem funktioniert es nicht. Ich habe schon unnötige Funktionen kommentiert und einige eindeutige Transaktionsnamen dort von Hand geschrieben … Aber trotzdem bekomme ich diese Ausnahme in der Zeile des ersten addSharedElement :

  • Shared Element Transition (Vordergrund / Hintergrund) Problem
  • Wie man eine Fade-Animation auf Activity-Übergang durchführt?
  • Gibt es nützliche Android Animation Tutorial für Anfänger?
  • Android: Beschleunigung der gemeinsamen Elementübergang zwischen Aktivitäten
  • OverridePendingTransition zeigt die zweite Aktivität zu schnell
  • Bildschirm blinkt zufällig beim Verwenden von overridePendingTransition auf Jelly Bean
  •  java.lang.IllegalArgumentException: Unique transitionNames are required for all sharedElements at android.support.v4.app.BackStackRecord.addSharedElement 

    BEARBEITEN

    Ohne die gemeinsamen Elemente funktioniert alles ganz gut …

  • Android macht Übergang auf Aktivität neu erstellen ()
  • EnterTransitionCoordinator verursacht NPE in Android 5.0
  • Gemeinsame Elemente überlaufen die Navigationsleiste in der Übergangsanimation
  • Eine andere Aktivität kommt auf und deckt die Hälfte der Bildschirmgröße ab
  • Wie deaktiviere ich die Navigationsleiste Schiebe-Animation beim Vollbild?
  • Wie bekomme ich benachrichtigt, wenn ein Übergang zwischen den Aktivitäten abgeschlossen ist?
  • 2 Solutions collect form web for “Fragment Transaktionen mit Übergang – Einzigartige Übergangsnamen sind erforderlich”

    Das Problem ist, dass addSharedElement den Transaktionsnamen der Ansicht nicht addSharedElement !

    Also in meinem Beispiel müsste ich es mit folgendem Code setzen:

     ViewCompat.setTransitionName(view.findViewById(R.id.ivLogo1), "1"); ViewCompat.setTransitionName(view.findViewById(R.id.ivLogo2), "2"); 

    VOR dem Hinzufügen dieser Ansichten zur FragmentTransaction

    Danach geht es gut und wie erwartet:

     ft.addSharedElement(view.findViewById(R.id.ivLogo1), "1"); ft.addSharedElement(view.findViewById(R.id.ivLogo2), "2"); 

    Wenn dein onClickListener Teil deines Fragments ist, nicht Eltern- Activity , dann machst du hier etwas falsch. Ihr Fragment sollte die übergeordnete Tätigkeit benachrichtigen, was es will und Activty sollte damit umgehen (dh durch das Ersetzen von Fragmenten usw.). Fragment sollte das niemals selbst machen. Auch wenn alles, was Sie brauchen, von Detailansicht zu Liste zu gehen, dann gehe ich davon aus, dass Sie Ihre Detailansicht aus dieser Liste eingegeben haben. Wenn ja, alles, was Sie brauchen, ist das letzte Element (Fragment View Fragment) aus dem Back Stack. Siehe: https://developer.android.com/reference/android/app/FragmentManager.html

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.