Sto provando a portare un'app per Android nella nuova libreria di supporto (support-v4: 21.0.0) e sto riscontrando problemi nell'avviare Attività da Frammenti con una transizione .Avvia attività da Fragment usando Transition (supporto API 21)
nelle mie attività, ho fatto qualcosa di simile:
Bundle options = ActivityOptionsCompat.makeSceneTransitionAnimation(this).toBundle();
ActivityCompat.startActivityForResult(this, intent, REQUEST_SOMETHING, options);
che funziona bene per le Attività. Tuttavia, se cerco di fare qualcosa di simile con Fragments, come:
Activity activity = getActivity();
Bundle options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity).toBundle();
ActivityCompat.startActivityForResult(activity, intent, REQUEST_SOMETHING, options);
si scopre che onActivityResult()
non si chiama per il frammento, ma solo la racchiude attività. Non ho trovato nulla nella libreria di supporto per passare il pacchetto di opzioni come parametro a startActivityForResult()
su un frammento effettivo e chiamarlo a onActivityResult()
in quel frammento. È possibile?
La soluzione più semplice sarebbe gestire tutte le chiamate onActivityResult()
nell'attività stessa, ma preferirei non farlo perché ho un sacco di possibili frammenti che potrebbero ricevere quella richiamata.
L'aiuto è apprezzato. Grazie!
avviare un'attività per risultato utilizzando l'ultimo metodo che hai fornito ha funzionato per me - grazie mille per la soluzione anche se non la trovo completamente pulita, quindi speriamo solo che Google non cambi nulla riguardo lo strano cambio di byte. – user2302510
Suppongo che sarebbe più pulito effettuare la chiamata da Activity e quindi passare il risultato dall'attività al Fragment ma avendo un sacco di frammenti collegati alla mia attività (a causa di viewpager) rende piuttosto difficile gestire – user2302510
@ user2302510 Esattamente, diventa davvero difficile gestirlo da solo. Sono contento che ci abbia aiutato! – 0101100101