Je veux naviguer d'une activité à une autre à l'aide du contrôleur de navigation. Je n'ai pas pu trouver un seul exemple qui illustre comment accomplir cela. Les documents Android indiquent d'utiliser l'un d'entre eux pour naviguer:
kotlin p> java p> J'utilise Kotlin. Pour toute raison étrange, Google a choisi de créer des méthodes distinctes pour Kotlin et Java. P> P>
3 Réponses :
Ajoutez d'abord la deuxième activité sous forme de destination dans la navigation. Donnez à cette transaction un nom. puis en utilisation du code.
Navigation.findNavController(view).navigate(R.id.myTransaction);
Lorsque je vais ajouter la deuxième activité sous forme de destination, il n'est pas répertorié des éléments que je peux choisir parmi lesquels je peux choisir.
Qu'est-ce que la vue? Pour cette utilisation
Il peut s'agir de l'activité dans laquelle vous êtes ou du bouton que vous avez cliqué sur
Il s'avère que dans l'éditeur de navigation que vous devez entrer manuellement dans la destination de l'activité que vous souhaitez accéder à. Vous devez le faire dans la vue texte et non dans la vue designers. Cela semble être un bogue ou une fonctionnalité gravement dépourvue de l'éditeur de navigation. Il devrait vraiment énumérer toutes les activités de votre application, qu'elle ne le fait pas actuellement. Dans mon application, je veux naviguer de l'activité de connexion à l'activité principale. Ceci est fait comme suit:
findNavController().navigate(R.id.action_loginFragment_to_mainActivity)
Au cours du développement de ce système de navigation, ils ont décidé d'utiliser un fragment comme modèle de base au lieu d'activité. Peut-être que c'est la raison pour laquelle nous ne pouvons pas voir l'activité dans la navigation.xml
définitivement, vous devez utiliser: dans mon cas, je dois utiliser: p>
Les kotlin sont des fonctions d'extension destinées à être une alternative plus agréable aux méthodes statiques de Java correspondantes. Donc, si vous êtes à l'intérieur d'un fragment, au lieu d'appeler
navhostfragment.findnavController (this) code> Vous pouvez simplement appelerwindnavcontroller () code>.