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

Composants graphiques Android Discussion :

Communiquer entre fragments et update fragment dans une viewPage


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 4
    Par défaut Communiquer entre fragments et update fragment dans une viewPage
    Bonjour,

    J'utilise un viewPager ainsi qu'un FragmentPagerAdapter pour swiper entre plusieurs fragments.
    Seulement, j'aimerai qu'un fragment qui mette à jour certaines données (contenues dans un Objet) puisse ensuite les communiquer aux autres fragments
    puis que ces fragments se mettent à jour avec les nouvelles données.

    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    L'interêt du fragment étant justement "indépendant", l'idée est de ne pas faire cela (du moins directement).

    L'objet qui centralise tout c'est l'activité:

    Activité => Fragment: appel de fonctions / paramètres
    Fragment => Activité : appel de callbacks (listener)

    Ensuite l'activité va dispatcher ses nouvelles données au fragment affiché.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 4
    Par défaut
    Merci pour la réponse.

    J'ai finalement utilisé un FragmentStatePagerAdapter. Je l'utilise comme un BaseAdapter classique.
    Pour la modification de données je passe bien par l'activité centrale.

    Voilà l'activité centrale et le FragmentStatePagerAdapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    public class FragmentPagerSupportStats extends FragmentActivity {
        static final int NUM_ITEMS = 2;
        private StatsFragmentPagerAdapter statsFragmentPagerAdapter;
     
        //l'objet contenant les données a modifier
        private StatsData statsData;
     
        private ArrayList<Fragment> fragmentArrayList;
        private ViewPager viewPager;
     
        //les fragments
        private InputData inputData;
        private ListResultatsActivity listResultatsActivity;
     
        protected void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_stats_fragment_view_pager);
            viewPager = (ViewPager)findViewById(R.id.pagerStats);
     
            inputData = new InputData().newInstance(0,"inserer donnée",statsData);
            listResultatsActivity = new ListResultatsActivity().newInstance(1,"list",statsData);
     
            fragmentArrayList = new ArrayList<>();
            fragmentArrayList.add(inputData);
            fragmentArrayList.add(listResultatsActivity);
     
            statsFragmentPagerAdapter = new StatsFragmentPagerAdapter(getSupportFragmentManager(), fragmentArrayList);
            viewPager.setAdapter(statsFragmentPagerAdapter);
        }
     
     
        public static class StatsFragmentPagerAdapter extends FragmentStatePagerAdapter {
            private ArrayList<Fragment> fragmentArrayList;
     
            public StatsFragmentPagerAdapter(android.support.v4.app.FragmentManager fm, ArrayList<Fragment> fragmentArrayList){
                super(fm);
                this.fragmentArrayList = fragmentArrayList;
            }
     
            @Override
            public Fragment getItem(int position) {
                return fragmentArrayList.get(position);
            }
     
            @Override
            public int getCount() {
                return NUM_ITEMS;
            }
        }
     
        public StatsData getStatsData(){
            return this.statsData;
        }
     
        //met à jour les fragments et l'adapter
        public void setStatsData(StatsData statsData){
            this.statsData = statsData;
            listResultatsActivity.onUpdateStats(statsData);
            fragmentArrayList.set(1,listResultatsActivity);
     
            statsFragmentPagerAdapter = new StatsFragmentPagerAdapter(this.getSupportFragmentManager(),fragmentArrayList);
            viewPager.setAdapter(statsFragmentPagerAdapter);
        }
    }
    Si quelqu'un a mieux qu'il n’hésite pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/03/2014, 09h48
  2. Réponses: 7
    Dernier message: 07/09/2008, 09h01
  3. Réponses: 4
    Dernier message: 26/08/2008, 17h11
  4. Conflit entre sous-section et section dans une en-tête
    Par patemino dans le forum Mise en forme
    Réponses: 3
    Dernier message: 17/03/2008, 11h09
  5. update multiple dans une meme colonne
    Par debdev dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/01/2006, 21h46

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