Comment envoyer des données d'une activité (intention) à une autre?
J'utilise ce code pour envoyer des données:
Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
android
android-intent
Adham
la source
la source
user.getUserAccountId()+""
car cela créerait des objets inutiles à collecter. Pensez à utiliserString.valueOf(user.getUserAccountId)
, ou à laInteger.toString(user.getUserAccountId)
place.Réponses:
Tout d'abord, obtenez l'intention qui a commencé votre activité en utilisant la
getIntent()
méthode:Si vos données supplémentaires sont représentées sous forme de chaînes, vous pouvez utiliser la
intent.getStringExtra(String name)
méthode. Dans ton cas:la source
getIntent().getStringExtra("id");
pour obtenir la chaîne d'identificationgetIntent()
méthode. J'ai mis à jour la réponse.Dans l'activité de réception
la source
getStringExtra?
null
, tous les extras récupérés peuvent être ignorés. En utilisantgetStringExtra
, vous le changez essentiellement en une série deif(extras != null) { return extras.getString(name) }
. Un pour chacun quegetStringExtra
vous appelez. Cette option vérifiera unenull
fois et si c'est le cas, cela ne dérangera pas duBundle
tout la lecture . En plus de cela,getStringExtra
continuera probablement àgetExtras
chaque fois de demander en interne. Vous avez donc simplement plus d'appels aux fonctions.la source
Complément
Définir les données
Obtenir des données
la source
Au lieu d'initialiser une autre nouvelle intention pour recevoir les données, procédez comme suit:
la source
Si utilisé dans une FragmentActivity, essayez ceci:
La première page étend FragmentActivity
Dans le fragment, il vous suffit d'appeler d'
getActivity()
abord,La deuxième page étend Fragment :
la source
Si vous essayez d'obtenir des données supplémentaires en fragments, vous pouvez essayer d'utiliser:
Placer des données en utilisant:
Obtenez des données en utilisant:
la source
Vous pouvez obtenir tout type de données supplémentaires à partir de l'intention , qu'il s'agisse d'un objet ou d'une chaîne ou de tout type de données.
et la solution la plus courte est:
la source
** Mettre les données par intention - **
** Obtenez des données par intention - **
si nous envoyons une valeur entière par intention. quand nous devons utiliser le 2e paramètre 0 dans getIntent (). getIntExtra ("instituteId", 0) sinon nous n'utilisons pas 0 alors android me donne une erreur.
la source
Kotlin
Première activité
Deuxième activité
Suggestion
Mettez toujours les clés dans un fichier constant pour une manière plus gérée.
la source
Juste une suggestion:
Au lieu d'utiliser "id" ou "nom" dans votre i.putExtra ("id" .....), je suggère, quand cela a du sens, d'utiliser les champs standard actuels qui peuvent être utilisés avec putExtra (), c'est-à-dire Intent.EXTRA_something.
Une liste complète se trouve sur Intent (Développeurs Android).
la source
Nous pouvons le faire par des moyens simples:
Dans FirstActivity:
Dans SecondActivity:
la source
Passez l'intention avec valeur sur la première activité:
Recevoir l'intention de la deuxième activité; -
Nous utilisons généralement deux méthodes dans l'intention d'envoyer la valeur et d'obtenir la valeur. Pour l' envoi de la valeur que nous utiliserons
intent.putExtra("key", Value);
et pendant l' intention de recevoir une autre activité que nous utiliseronsintent.getStringExtra("key");
pour obtenir les données d' intention queString
ou utiliser une autre méthode disponible pour obtenir d' autres types de données (Integer
,Boolean
, etc.). La clé peut être n'importe quel mot clé pour identifier la valeur signifie que la valeur que vous partagez. J'espère que cela fonctionnera pour vous.la source
Vous pouvez également faire comme ceci
// mettre de la valeur dans l'intention
// tirer parti de l'intention
la source
Obtenir différents types d'extra de l'intention
Pour accéder aux données de Intent, vous devez savoir deux choses.
Il existe différentes méthodes dans la classe Intent pour extraire différents types de types de données. Ça ressemble à ça
Donc, si vous connaissez le type de données de votre varibale que vous avez défini dans otherActivity, vous pouvez utiliser la méthode correspondante.
Exemple pour récupérer de la chaîne dans votre activité depuis l'intention
Liste des différentes variantes de méthodes pour différents types de données
Vous pouvez voir la liste des méthodes disponibles dans la documentation officielle d' intention .
la source
la source
Je viens de poster ici une réponse qui couvre ce sujet de manière un peu plus détaillée, y compris quelques alternatives.
Il utilise Vapor API , un nouveau framework Android inspiré de jQuery que j'ai écrit pour simplifier le développement Android. Consultez l'exemple de cette réponse pour savoir comment vous pouvez facilement transmettre des données entre les activités.
Il montre également ce
VaporIntent
qui vous permet d'enchaîner les appels de méthode et d'utiliser la.put(...)
méthode surchargée :Vous pouvez facilement transmettre des données à l'ensemble de votre application à l'aide de l' API Vapor , alors j'espère que cela vous sera utile, ainsi qu'aux autres, pendant le développement de l'application.
la source