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 :

Changer image d'un imageView dans un fragment depuis l'activity


Sujet :

Composants graphiques Android

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2002
    Messages : 86
    Par défaut Changer image d'un imageView dans un fragment depuis l'activity
    Bonjour,

    Cela fait des heures que je cherche une solution à mon problème, j’abandonne les recherches, je post ici!

    J'ai une activity avec avec un viewpager contenant 3 fragments. sur le premier fragment, j'ai des imagesView

    A la création des fragments, je lis des valeurs dans un tableau et en fonction de son contenu, pour chaque imageView j'affecte une image.

    A l'aide de registerForContextMenu, j'ai un menu qui s'ouvre quand je fais un clique long sur une image, je selectionne une action qui recharge mes données dans mon tableau et ensuite j'aimerai changer les image des imageView en fonction des nouvelles valeurs.
    Mais je ne suis plus dans le fragment pour realiser cela et impossible de trouver l'imageView.
    Comment faire?

    La création de mes fragments:
    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
     
     
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                     Bundle savedInstanceState) {
     
                switch (Integer.parseInt(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)))) {
                    case 1:
                        final ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_salle1, container, false);
     
                        ImageView Table10 = (ImageView) rootView.findViewById(R.id.table10); // menu supplementaire
     
                        new Thread(new Runnable() {
                            @Override
                            public void run() {
     
     
                                telechargement_gestion_tables();
     
                                getActivity().runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        ImageView Table10 = (ImageView) rootView.findViewById(R.id.table10); 
     
                                        if (ListegestionTables.get(9).equals("1")) {
                                            Table10.setBackgroundColor(Color.RED);
                                        }
                                    }
                                });
     
                             //   progressDoalog.dismiss();
     
     
                            }
     
     
                        }).start();
     
                        registerForContextMenu(Table10);
     
     
                        return rootView;
     
                    case 2:
                        ViewGroup rootView2 = (ViewGroup) inflater.inflate(R.layout.fragment_salle2, container, false);
     
                        return rootView2;
     
                    case 3:
                        ViewGroup rootView3 = (ViewGroup) inflater.inflate(R.layout.fragment_salle3, container, false);
                        return rootView3;
     
                }
     
     
     
     
                return null;
     
     
     
     
            }

    Le code pou rafraichir suite a l'appui long sur l'image:
    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
      public boolean onContextItemSelected(MenuItem item) {
          //  AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
     
            if(item.getTitle()=="Action 1") {
     
     
    		     getActivity().runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
     
                                        ImageView Table10 = (ImageView) rootView.findViewById(R.id.table10);
     
                                        if (ListegestionTables.get(9).equals("1")) {
                                            Table10.setBackgroundColor(Color.RED);
                                        }
                                    }
                                });
     
     
            }
     
            else{
                return false;
            }
            return true;
     
        }
    Dans ce code je reprend le meme que lors de la création du fragment, mais ici getActivity est en erreur et rootView n'est pas reconnu..

    Une idée pour pouvoir changer mon image de mon imageView? ou bien recréer le fragment? ou une autre idée.


    Merci,
    TouFou

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2002
    Messages : 86
    Par défaut
    Peut-etre que je ne suis pas clair dans la description de mon problème...

    Si je pose la question autrement:
    Dans un ViewPager contenant plusieurs pages avec chacune d'elle un fragment, comment fait-ton pour changer les propriétés d'un imageView contenu dans un fragment à un autre moment que lors de la création?

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Tu ajoute un listener sur le changement de page de ton viewpager.

    Ce qui va te donner ,de mémoire, un numéro de page. Ne reste alors qu'à récupérer le bon fragment via le l'adapter du viewpager ou le fragment manager. Une fois que tu as récupérer le fragment tu fait appel à une méthode de celui ci pour mettre à jour ton imageview.

    Voir également cette doc pour la communication fragment/activity : http://developer.android.com/trainin...unicating.html
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/07/2015, 09h06
  2. Raffraichissement des Fragments depuis l'activity
    Par stelincat dans le forum Android
    Réponses: 8
    Dernier message: 15/04/2014, 19h23
  3. Insérer une image dans un fragment de page jspf
    Par ze veritable farf dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 09/05/2006, 10h43
  4. Changer image dans bouton
    Par davier1 dans le forum IHM
    Réponses: 1
    Dernier message: 22/12/2005, 04h44
  5. Réponses: 2
    Dernier message: 23/06/2004, 13h56

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