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.

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{
        ...
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
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;
                ....
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
@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;
 
               ....
            }
        }
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
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));
 
        }
 
    }
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...

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.