Ich versuche, eine Android-App in die neue Support-Bibliothek zu portieren (support-v4: 21.0.0) und habe Probleme beim Starten von Aktivitäten aus Fragmenten mit einem Übergang .Aktivität von Fragment über Transition starten (API 21-Unterstützung)
In meinen Aktivitäten, ich habe so etwas getan:
Bundle options = ActivityOptionsCompat.makeSceneTransitionAnimation(this).toBundle();
ActivityCompat.startActivityForResult(this, intent, REQUEST_SOMETHING, options);
, die für Aktivitäten gut funktioniert. Allerdings, wenn ich versuche, etwas ähnliches mit Fragmenten zu tun, wie:
Activity activity = getActivity();
Bundle options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity).toBundle();
ActivityCompat.startActivityForResult(activity, intent, REQUEST_SOMETHING, options);
es stellt sich heraus, dass onActivityResult()
nicht für das Fragment genannt wird, sondern nur die umschließenden Aktivität. Ich habe nichts in der Support-Bibliothek gefunden, um die Optionen Bundle als Parameter an startActivityForResult()
auf einem tatsächlichen Fragment zu übergeben und es zurückrufen zu onActivityResult()
in diesem Fragment. Ist das möglich?
Die einfachste Lösung wäre, alle onActivityResult()
Aufrufe in der Aktivität selbst zu behandeln, aber ich würde lieber nicht tun, weil ich eine Tonne von möglichen Fragmenten habe, die diesen Rückruf erhalten könnten.
Hilfe ist willkommen. Vielen Dank!
das Starten einer Aktivität für das Ergebnis mit der letzten von Ihnen bereitgestellten Methode hat für mich funktioniert - vielen Dank für die Lösung, obwohl ich sie nicht komplett sauber finde, also hoffen wir, dass Google nichts an der seltsamen Byteverschiebung ändert. – user2302510
Ich denke, es wäre sauberer, den Aufruf von Activity zu machen und dann das Ergebnis von der Aktivität an das Fragment zu übergeben, aber mit vielen Fragmenten, die an meine Aktivität angehängt sind (wegen viewpager), macht es ziemlich schwierig zu handhaben – user2302510
@ user2302510 es wird wirklich verwirrend, das alleine zu bewältigen. Froh, dass es geholfen hat! – 0101100101