J'ai deux graphiques, donc le premier graphique passe d'un fragment à une activité en passant safeArgs à l'activité.
val action = MyFragmentDirections.actionMyActivity(arg1, arg2)
Navigation.findNavController(view).navigate(action)
Maintenant dans la seconde, je veux passer ces arguments de MyActivity
à un fragment qui appartient à cette activité.
Je peux obtenir les arguments:
val args = MyActivity.fromBundle(intent.extras)
Le problème est qu'il n'y a pas de fichier Directions
pour cette activité, donc je ne peux pas passer les arguments.
Navigation 1.0.0-alpha07 correction de la demande de fonctionnalité pour passer des arguments à la destination de départ d'un graphique.
Pour l'utiliser, vous devez:
app:navGraph
De votre NavHostFragment
findNavController(R.id.your_nav_Host_fragment).setGraph(R.navigation.your_graph, intent.extras)
Utilisation du R.id
De votre NavHostFragment
et R.navigation
Que vous aviez précédemment sur votre balise app:navGraph
. En passant les arguments dans l'appel setGraph
, votre destination de départ obtiendra directement les arguments, sans appeler à nouveau navigate
(ce qui, par défaut, créerait une nouvelle instance de la destination sur votre pile arrière - pas ce que vous voulez).
Je ne sais pas si cela est recommandé, mais cela fonctionne:
val args = MyActivity.fromBundle(intent.extras)
navController.navigate(R.id.myActivityFragment, args.toBundle())