Android: Appeler fonction dans intent

Signaler
Messages postés
145
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
22 février 2021
-
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
-
Bonjour à tous,

Je développe une application Android en java.
J'ai ma MainActivity qui crée un intent:
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra(RC_SHARE, "blabla");
startActivity(intent);


Dans ma MainActivity j'ai un second thread. Dans ce thread, je voudrais changer le texte d'un TextView de ma SecondActivity.

Je n'ai pas trouvé comment appeler une fonction depuis un autre intent. putExtra ne fonctionne pas dans mon cas, car je veux pouvoir modifier la TextView plus tard, pas à la création de l'intent.

Comment faire ?
Merci de votre aide :)

1 réponse

Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
110
Salut,

Je te conseil de regarder le lifecycle des activity, parce que au moment où tu vas faire le startActivity de ton intent vers SecondActivity, l'activity MainActivity sera inopérante.

Si tu veux récup le texte que tu as placé au moment de la création de ton intent tu peux dans SecondActivity faire:
public class SecondActivity ...
...
 @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    Intent intent = getIntent();
    if(intent  != null && intent.getExtras() != null) {
        Bundle extras = intent.getExtras();
        rcShare = extras.getString(RC_SHARE);
        Log.d(getClass().getName(), "rcShare: " + rcShare);
      }
      ...
   }
...
}


Maintenant, si tu veux récup une donnée à l'issue du traitement dans SecondActivity, remplace ton startActivity par un startActivityForResult (+implémentation de onActivityResult) et dans SecondActivity au moment de la fin de ton activity il faudra que tu utilises au choix une des méthodes suivantes :
setResult(int,Intent)
setResult(int)

Finalement, si tu veux lancer un traitement asynchrone entre ta première activity et la seconde tu peux toujours passer par des Service + BroadcastsReceiver .