Bonjour,
Une fois de plus, je me tourne vers les bonnes volontés pour m'aider face à un problème qui me fait tourner chèvre !
Pour donner la structure de mon programme :
J'ai une activité principale, créée à partir du modèle "Tabbed activity". Donc un main et X fragments qui s'enchainent les uns aux autres.
Sur l'un de ces fragments (dans la classe PlaceHolderFragment), je déclare un bouton et une listview:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class Accueil extends AppCompatActivity { private SectionsPagerAdapter mSectionsPagerAdapter; ... public static class PlaceholderFragment extends Fragment implements View.OnClickListener{ ...
Quand on appuie sur le bouton, on peut sélectionner une 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 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { int numeroFragment = getArguments().getInt(ARG_SECTION_NUMBER); switch (numeroFragment){ case 1 : rootView = inflater.inflate(R.layout.fragment_accueil, container, false); titre = (TextView) rootView.findViewById(R.id.section_label); titre.setText("Accueil"); //textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER))); return rootView; case 2 : rootView = inflater.inflate(R.layout.fragment_insertion, container, false); titre = (TextView) rootView.findViewById(R.id.section_label); titre.setText("Insertion"); boutonImage = (Button) rootView.findViewById(R.id.bImage); boutonImage.setOnClickListener(this); listeImages = (ListView) rootView.findViewById(R.id.lvImages); return rootView; ....
A ce stade, nous sommes toujours dans la classe PlaceHolderFragment. Mais quand je veux exploiter le résultat de cette sélection, je suis obligé de rebasculer dans la classe "Accueil" pour implémenter ma méthode :
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 @Override public void onClick(View v) { switch (v.getId()) { case R.id.bImage: Intent i = new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i,resultatSelection); break; .... } }
Jusque là, tout va bien, mais c'est ensuite que c'est le drame ! Je voudrais, via un Adapter de ma conception, afficher la liste messages dans ma listview (listeImages). Mais cette listview n'est pas connue sous "Accueil". Même si je la déclare en public à partir de PlaceHolderFragment, rien à faire, je ne parviens pas à lui indiquer que la liste "messages" sous "Accueil" doit être transférée à listeImages sous PlaceHolderFragment...
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 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //switch(requestCode) { //case RESULT_IMAGE: if (resultCode==RESULT_OK){ //try { //Récupération de l'image final Uri imageUri = data.getData(); String cheminImage = imageUri.getPath(); String statutImage = "Suppression après envoi"; Bitmap visuImage = null; try { visuImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri); } catch (IOException e) { e.printStackTrace(); } messages.add(new Message(cheminImage,visuImage,statutImage)); } }
J'ai pensé à une interface, mais étant donné que les appels vers PlaceHolderFragment sont directement gérés dans la structure de l'application, je ne sais pas où intervenir pour faire le lien entre les deux classes.
Et sinon, il n'y a pas un moyen pour éviter que le "onActivityResult revienne vers "Accueil" ? S'il restait au niveau du fragment qui fait l'appel, mon problème serait résolu !
Merci de votre aide.
Partager