IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Récupérer la position d'un fragment au sein d'un slider


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut Récupérer la position d'un fragment au sein d'un slider
    Bonjour,

    Je me suis basé sur ce tuto pour permettre un slide entre mes view (un peu comme sur le google play) mais je ne comprend pas trop comment je pourrais récupérer la position (qui est retournée dans le MyPageAdapter) et l'utiliser au sein même du fragment.

    En fait pour faire court j'ai 3 vues qui se ressemblent toutes à 2 détails près, les données qu'elles affichent dans les listes sont différentes et le titre aussi.
    Donc j'aimerais slider 3 fois sur la même vue (le même fragment) mais que l'affichage change en fonction de ça.

    Merci d'avance pour vos réponses

    ps: j'ai suivi ces tutoriels Android : http://android.developpez.com/cours/

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    En fait pour faire court j'ai 3 vues qui se ressemblent toutes à 2 détails près, les données qu'elles affichent dans les listes sont différentes et le titre aussi.
    Donc j'aimerais slider 3 fois sur la même vue (le même fragment) mais que l'affichage change en fonction de ça.
    Utilise alors le même content dans tes trois Fragment différents et gère dynamiquement l'affichage sur les parties différentes sur l'inflater ou alors gère directement les widgets sur leurs visibilité (VISIBLE, INVISIBLE, GONE) en fonction du fragment qui a été appelé ?
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    On m'a proposé de récupérer dans le "main.java" la position du fragment avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mViewPager.getCurrentItem();
    Et on me dit d'utiliser les bundle pour récupérer la variable dans le fragment et faire les tests là.
    Mais je trouve pas grand chose là-dessus (précision ce n'est lancer une activité avec une variable, donc pas d'intend).

  4. #4
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Je comprends pas pourquoi tu te prends la tête à vouloir avoir une astuce depuis ton fragment en fonction des positions, niveau maintenance, ce n'est pas le top.

    Pourquoi ne pas tout simplement avoir une class Fragment de Base sur laquelle les trois appuierons ?

    Tu mets ton code générique dans la classe de base, et le code spécifique dans les classes spécifiques.

    Après tu attributs chaque fragment spécifique à une View.

    Si tu veux garder absolument qu'un seul fragment et le piloté a distance,alors depuis ton activité tu peux connaître la position active.

    De cette position active tu demande à ton adapter de te retourner le fragment correspondant. De ce fragment retourné tu peux interagir dessus.

    Du style

    De ton Activity:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int pos = mViewPager.getCurrentItem();
    Fragment frag = mPagerAdapter.GetItem(pos);
    frag.setValue(value);
    Par contre attention tu dois bien compléter la fonction getItem de ton adapter qui est une fonction virtuelle de la classe FragmentPagerAdapter.

    Donc depuis ton adapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     @Override
            public Fragment getItem(int position) {
                return this.fragments.get(position);
            }
    Comme dans le tutorial.


    N'oublie de faire un Update quand tu auras modifié ta View, via la fonction notifyDataSetChanged
    http://developer.android.com/referen...tChanged%28%29
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Oua

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Ouais mais ces lignes je peux les taper seulement dans le fichier main qui s'occupe de lister les fragments et mettre en place l'adaptateur.
    mais si je veux récupérer cette valeur dans le code de mon fragment je dois bien passer la variable?

  7. #7
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    mais si je veux récupérer cette valeur dans le code de mon fragment je dois bien passer la variable?
    Tu dois le faire à partir de ton activity qui elle sera capable de connaître la position active.

    Pour savoir si l'utilisateur change de position il faut implémenter le listener
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mViewPager.setOnPageChangeListener
    http://developer.android.com/referen...ngeListener%29

    Via cette fonction du listener tu seras capable de connaître la nouvelle position de ta ViewPager.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onPageSelected (int position)
    http://developer.android.com/referen...ected%28int%29

    Ensuite de cette activity tu dois récupérer le fragment sélectionné pour le mettre à jour, comme expliqué ci dessus, à toi après de définir la variable que tu dois passer et les actions qu'elle entraîne sur le fragment (cela sera donc défini depuis ta classe Fragment).
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Ouais mais ça déjà avec le getCurrentItem je sais avoir la position?
    Sans mettre de listener me semble?
    Mais ce que je ne comprend pas c'est que je ne peux pas récupérer autrement que par le bundle ma variable dans une autre classe en tapant simplement le nom de la classe.variablePosition.
    Cette variable que l'on a récupéré dans au niveau de l'activité qui gère le viewpager?

    désolé si j'ai pas tout compris j'ai sans doute zappé un élément.

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Bon bah j'ai trouvé un tuto mais qui explique avec une actionbar et des tab (ce qui ne m'intéresse pas vraiment.
    et donc je ne vois pas trop comment utiliser correctement la méthode onPageSelected :s
    Quelqu'un pourrait un peu m'éclairer? (surtout que je ne vois pas trop comment récupérer la position dans mon fragment (vu qu'apparemment cette partie de code se place dans l'activité gérant le viewPager)

    Merci

  10. #10
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Ouais mais ça déjà avec le getCurrentItem je sais avoir la position?
    Sans mettre de listener me semble?
    Non tu connaitras la position que lorsque tu demanderas ta requête.
    Quizz, comment feras tu pour savoir si l'utilisateur a changer de position entre temps ?
    Mais ce que je ne comprend pas c'est que je ne peux pas récupérer autrement que par le bundle ma variable dans une autre classe en tapant simplement le nom de la classe.variablePosition.
    Je ne t'ai jamais parlé de Bundle ! Je t'ai expliqué que ta MainActivity doit passer l'information à ton fragment, pour se faire l'Activity peut récupérer directement le Fragment et ainsi discuter avec lui. (sans Bundle).

    Tout les liens ne sont pas fait entre les classes , des fois il faut les faire ...
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Ouais je sais que tu m'as pas dit ça, je me base sur des réponses d'autres forums aussi ^^
    C'est pas facile de mettre de l'ordre dans toutes les possibilités proposées ^^

  12. #12
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    C'est pas facile de mettre de l'ordre dans toutes les possibilités proposées ^^
    , prends ton temps et essaye les propositions que l'on te suggère en comprenant bien ce que tu est en train de faire.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

Discussions similaires

  1. [Plugin] Récupérer la position du curseur
    Par Amon dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 12/02/2009, 10h38
  2. Récupérer la position dans un fragment sh.
    Par Bakura dans le forum OpenGL
    Réponses: 4
    Dernier message: 21/11/2007, 17h23
  3. Comment récupérer la position des icones du bureau ?
    Par bambino3996 dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 29/09/2005, 18h38
  4. récupérer la position d'un enregistrement
    Par zenzo dans le forum Requêtes
    Réponses: 11
    Dernier message: 20/07/2005, 14h13
  5. Récupérer la position d'un enregistrement
    Par Hell dans le forum Requêtes
    Réponses: 6
    Dernier message: 10/09/2004, 19h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo