Intent qui ne transmet pas de donnée

Résolu/Fermé
samigtx1459 Messages postés 482 Date d'inscription vendredi 3 août 2012 Statut Membre Dernière intervention 13 janvier 2024 - Modifié le 18 mai 2020 à 09:28
samigtx1459 Messages postés 482 Date d'inscription vendredi 3 août 2012 Statut Membre Dernière intervention 13 janvier 2024 - 19 mai 2020 à 05:15
Bonsoir,
J'ai un problème lorsque je passe d'une activité à une autre. J'essaie de transmettre une donnée qui est seulement une ID avec un Bundle et un Intent mais lorsque j'essaie de récupérer ma valeur il ne récupère rien et je ne sais pas pourquoi...
Merci à tout ceux qui pourront me venir en aide.
Voici deux parties de mes codes qui seront utiles je pense pour que vous puissiez me dire ou ça cloche.


Partie qui transmet la valeur:

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Bundle data = new Bundle();
                data.putInt("idMusic",position);
                Intent openMainActivity = new Intent(Main2Activity.this,MainActivity.class);
                openMainActivity.putExtras(data);
                openMainActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                startActivityIfNeeded(openMainActivity,0);
            }
        });







Partie qui est censé récupérer la valeur :

@Override
    protected void onResume() {
        super.onResume();
        Intent intent = getIntent();
        int newIdCurrentSound;
        if (intent != null) {
            Bundle data = intent.getExtras();
            if (data != null) {
                newIdCurrentSound = data.getInt("idMusic");
                System.out.println("New ID : " + newIdCurrentSound);
                if (newIdCurrentSound != -1) {
                    mediaPlayer.reset();
                    idCurrentSound = newIdCurrentSound;
                    playSound(idCurrentSound);
                }
            }
        }

    }

1 réponse

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
Modifié le 18 mai 2020 à 14:24
Hello,

Généralement, on n'utilises pas de Bundle intermédiaire pour passer des types simples

Envoi de paramètres
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra(EXTRA_MUSIC_ID_KEY, idMusic);
startActivity(intent);


Réception des paramètres (dans le
onCreate()
de ta 2nde Activity)

Intent intent = getIntent(); // gets the previously created intent
int idMusic = intent.getIntExtra(EXTRA_MUSIC_ID_KEY);


Note : la variable EXTRA_MUSIC_ID_KEY est en fait une constante que tu aura pris soin d'initialiser correctement .

Or, le flag
Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
te permet de ré-afficher une Activity déjà créé. Donc, tu ne passes pas dans le
onCreate()
mais dans le
onNewIntent()
.

1
samigtx1459 Messages postés 482 Date d'inscription vendredi 3 août 2012 Statut Membre Dernière intervention 13 janvier 2024 67
19 mai 2020 à 05:15
Merci beaucoup pour ta réponse, j'ai enfin résolu mon problème !!!
0