10
votes

Comment garder le snackbar ouvert après que l'action soit appelée

J'utilise un snackbar pour notifier aux utilisateurs de mon application qu'ils ne sont pas connectés à Internet. J'ai ajouté une action "Réessayer" à la snackbar qui vérifie la connexion. Je veux que le snackbar reste affiché jusqu'à ce que je le renvoie moi-même (lorsqu'une connexion Internet est trouvée), mais je ne peux pas obtenir cela pour travailler. Chaque fois que je clique sur l'action, le snackbar rejete.

J'ai défini la durée pour indéfinie et le snackbar reste ouvert indéfiniment, mais il rejette quand je clique sur l'action.

J'ai lu en ligne qui rejetant le snackbar automatiquement après avoir cliqué sur l'action n'a pas toujours été le comportement par défaut.

EDIT:

Je sens que ma question pourrait être mal formulée. J'ai un snackbar avec une action mais je ne veux pas que le snackbar se ferme lorsque l'action est exécutée, ce qu'elle fait automatiquement un guichet automatique.


4 commentaires

Pourquoi ne pas simplement créer un nouveau snackbar lorsque l'utilisateur tape "tentative"? IMHO, cela pourrait même être bon d'attendre une seconde avant d'afficher la nouvelle snackbar en tant que commentaires visuels, en disant à l'utilisateur que "Oui, j'ai réessayé, mais il n'y a toujours pas de connexion Internet". (Cela ne veut pas dire qu'il n'y a aucun moyen de faire ce que vous voulez)


Alors voulez-vous montrer une barre de serpent jusqu'à ce que l'utilisateur le rejeter manuellement. droit?


Eh bien, l'utilisateur peut le rejeter en glissant, ce que je n'ai pas de problème avec. Je ne veux tout simplement pas que cela se ferme automatiquement quand ils cliquent sur l'action


Il y a déjà des commentaires visuels lors de la vérification d'une connexion, mais je suppose que je vais finir par utiliser un nouveau snackbar comme vous l'avez suggéré. Je ne peux tout simplement pas imaginer pourquoi il ne serait pas facile de ne pas clore le snackbar. Comme je l'ai dit, cela était même utilisé comme le comportement par défaut.


3 Réponses :


1
votes

Vous pouvez remplacer le jeu ONClickListener pour le bouton. Prenez d'abord le snackbar avec et définir l'action avec un lecteur mannequin xxx

, puis trouver le bouton et définissez votre liste xxx


1 commentaires

Pour ajouter à cela, au lieu d'itération du groupe de visiteurs, vous ne pouvez qu'utiliser Findviewide . i.e. bouton actionbutton = (bouton) snackbar.geview (). FOISTVIEWBYID (android.support.design.r.id. snackbar_acte);



1
votes

Vous pouvez essayer ce xxx

Une fois l'action cliquée, SnackBar se fermera automatiquement mais avec un délai, donc si vous appelez snackbar.show (); Directement dans le onclicklistener , le snack-bar ne s'affichera pas. Par conséquent, pour que cela montre toujours, donnez-lui un retard avant de le montrer. (Étonnamment, un retard de millisecond suffit)


0 commentaires

0
votes

Vous pouvez effectuer ce qui suit:

snack = Snackbar.make(binding.root, "Your text", Snackbar.LENGTH_INDEFINITE)
            .setAction("Button Text") {
                // do something here 
                it.postDelayed({
                    snack.show()
                }, 1000) // Snackbar reappears after 1 second
            }


0 commentaires