Android: Appeler fonction dans intent

yoanpg Messages postés 156 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 20 janvier 2024 - 22 févr. 2021 à 10:33
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 11 mars 2021 à 11:56
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

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
11 mars 2021 à 11:56
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 .

0
Rejoignez-nous