Intent qui ne transmet pas de donnée
Résolu
samigtx1459
Messages postés
470
Date d'inscription
Statut
Membre
Dernière intervention
-
samigtx1459 Messages postés 470 Date d'inscription Statut Membre Dernière intervention -
samigtx1459 Messages postés 470 Date d'inscription Statut Membre Dernière intervention -
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:
Partie qui est censé récupérer la valeur :
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
-
Hello,
Généralement, on n'utilises pas de Bundle intermédiaire pour passer des types simples
Envoi de paramètresIntent intent = new Intent(this, SecondActivity.class); intent.putExtra(EXTRA_MUSIC_ID_KEY, idMusic); startActivity(intent);
Réception des paramètres (dans leonCreate()
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 flagIntent.FLAG_ACTIVITY_REORDER_TO_FRONT
te permet de ré-afficher une Activity déjà créé. Donc, tu ne passes pas dans leonCreate()
mais dans leonNewIntent()
.