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:
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:
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