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 :

Communiquer entre Fragment


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut Communiquer entre Fragment
    Bonjour,

    J'aimerai savoir, quelles sont les bonnes pratiques concernant le dialogue entre deux fragments?

    Est ce que c'est une bonne idée de dialoguer directement entre deux fragments par le biais de Bundle ou bien doit t-on envoyer les données a l'Activity sous forme de Callback, et ensuite appeler le fragment?

    Merci

  2. #2
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Conceptuellement parlant ce n'est pas logique de faire communiquer entre eux deux éléments créés pour justement séparer le code.

    Soit deux fragments F et G. F ne connaît pas G et G ne connaît pas F. Sinon autant avoir un unique fragment. Hors pour communiquer il faut se connaître. Qui est l'objet le seul a connaître les deux ? Ça peut être l'activité ou tout autre objet entre les deux.

    Ensuite pour communiquer il fait parler le même langage donc utiliser une (ou plusieurs) interface(s) entre tous les éléments.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Merci pour l'explication,

    Pour envoyer des données de l'activity aux fragments est ce que le seul d'y parvenir est d'utiliser le Bundle et faire Fragment.setArguments(bundle); ?

    Je sais qu'il faut utiliser une interface pour envoyer des données a l'activité.

  4. #4
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    L'activité connaissant les fragments (elle les instancie même) rien n'empêche de directement appeler une fonction de ceux-ci.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Très bien est ce qu'il faut sérialiser certains objets lorsqu'on veut passer en paramètre d'une méthode du fragment A?

    ex: FragmentA.updateList(List<String> s);

    J'instancie mon Fragment depuis l'activity:
    new FragmentA . updateList(list)

    Dans certains cas de figure, on utilise un Bundle pour envoyer les informations:
    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
    public void onArticleSelected(int position) {
        // The user selected the headline of an article from the HeadlinesFragment
        // Do something here to display that article
     
        ArticleFragment articleFrag = (ArticleFragment)
                getSupportFragmentManager().findFragmentById(R.id.article_fragment);
     
        if (articleFrag != null) {
            // If article frag is available, we're in two-pane layout...
     
            // Call a method in the ArticleFragment to update its content
            articleFrag.updateArticleView(position);
        } else {
            // Otherwise, we're in the one-pane layout and must swap frags...
     
            // Create fragment and give it an argument for the selected article
            ArticleFragment newFragment = new ArticleFragment();
            Bundle args = new Bundle();
            args.putInt(ArticleFragment.ARG_POSITION, position);
            newFragment.setArguments(args);
     
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
     
            // Replace whatever is in the fragment_container view with this fragment,
            // and add the transaction to the back stack so the user can navigate back
            transaction.replace(R.id.fragment_container, newFragment);
            transaction.addToBackStack(null);
     
            // Commit the transaction
            transaction.commit();
        }
    }
    Pourquoi on appelle pas directement une méthode du fragment?

Discussions similaires

  1. Comment "communiquer" entre différents projets ?
    Par StormimOn dans le forum C#
    Réponses: 17
    Dernier message: 08/07/2008, 13h55
  2. [c#] communiquer entre les instances d'une appli
    Par damned3 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/10/2006, 10h32
  3. Réponses: 2
    Dernier message: 15/05/2006, 22h22
  4. Réponses: 6
    Dernier message: 29/03/2006, 17h23
  5. Communiquer entre plusieurs instances d'applications
    Par bourinator dans le forum C++Builder
    Réponses: 5
    Dernier message: 28/09/2003, 11h24

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