Dans mon application, je souhaite que le processus de création d'un nouvel enregistrement soit divisé en plusieurs étapes au cours desquelles les utilisateurs sont interrogés sur différentes informations. J'ai donc créé une activité avec NavHostFragment et je souhaite utiliser un graphique de navigation pour basculer entre les fragments à l'aide d'un bouton next dans la barre d'outils de cette activité.

Clicking the next button navigates to next fragment

Est-il possible de configurer le bouton pour naviguer entre les fragments en fonction d'un graphique de navigation ? Est-ce une bonne approche ? Dois-je plutôt utiliser une nouvelle activité pour chaque étape ? Je suis nouveau dans le développement Android, donc je ne sais pas quelle est la meilleure façon de le faire.

0
Jan Koci 10 nov. 2020 à 13:15

1 réponse

Meilleure réponse

Vous pouvez le gérer avec votre graphique de navigation

  1. Gérez les événements de clic de la barre d'outils dans vos fragments :

    https://stackoverflow.com/a/30077965/11982611

    Tout en gérant l'événement de clic sur le bouton suivant de chaque fragment, implémentez votre code de navigation

    findNavController().navigate(Your action)
    
  2. Gérez tous les processus de navigation dans l'écouteur OnItemOpotionsSelected de votre activité

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
    
    val navHostFragment = supportFragmentManager.primaryNavigationFragment
    val fragment = navHostFragment?.childFragmentManager?.fragments?.get(0)
    
    when(item.itemId)
    {
        android.R.id.home->super.onBackPressed()
        R.id.next-> {
             if(fragment is Fragment1)
             {
                fragment.findNavController().navigate(Fragment1toFragmen2 action)}
    
             if(fragment is Fragment2)
             {
                fragment.findNavController().navigate(Fragment2toFragmen3 action)}
        }
    
        return true
    }
    
1
Wai Ha Lee 10 nov. 2020 à 16:51