Comment puis-je obtenir des données supplémentaires à partir de l'intention sur Android?
Comment puis-je envoyer des données à partir d'une activité (l'intention) à l'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);
- Java noter: Il n'est jamais une bonne idée de les "stringify" entier comme ça (surtout pour les fins de l'exemple), et, malheureusement, il est souvent considéré comme un très bon moyen rapide de convertir en int en string en java:
user.getUserAccountId()+""
, ce qui permettrait de créer inutilement des objets à collecter. Pensez à utiliserString.valueOf(user.getUserAccountId)
, ouInteger.toString(user.getUserAccountId)
à la place. - S Est-ce pas le web? C'est le numéro un résultat pour "obtenir des données à partir d'intention"
- Je suis d'accord avec McGuile. Aussi, cette question a été posté il y a donc la réponse n'était probablement pas aussi faciles à trouver à l'époque. Et si une question similaire n'avait pas été affiché à la ALORS encore, alors que c'était un poste valide.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, obtenir l'intention qui a commencé votre activité à l'aide de la
getIntent()
méthode:Si vos données sont représentées comme des chaînes de caractères, vous pouvez utiliser
intent.getStringExtra(String name)
méthode. Dans votre cas:getIntent().getStringExtra("id");
pour obtenir l'id de la chaînegetIntent()
méthode. J'ai mis à jour la réponse.intent.getByteArrayExtra("image")
.hasExtra
méthode, mais je préfère null-vérifier la valeur retournée car il est plus robuste.getStringArrayListExtra
pourArrayList<String>
.onNewIntent
de l'actuel.À la réception d'activité
getStringExtra?
null
, l'ensemble des extras d'extraction peut être ignorée. En utilisantgetStringExtra
, vous modifier fondamentalement à une série deif(extras != null) { return extras.getString(name) }
. Un pour chaquegetStringExtra
vous appeler. Cette option permettra de vérifiernull
une fois et si oui, ce ne sera pas la peine de lire leBundle
à tous. En outre,getStringExtra
va probablement continuer à demandergetExtras
en interne, chaque heure ainsi. Vous n'avez plus d'appels de fonctions.Rajouter
Ensemble De Données
Obtenir Les Données
Au lieu de l'initialisation d'une autre nouvelle Intention de recevoir les données, il suffit de faire ceci:
Si utilisé dans un FragmentActivity, essayez ceci:
La première page étend FragmentActivity
Dans le fragment, il vous suffit d'appeler
getActivity()
d'abord,La deuxième page s'étend Fragment:
Si vous essayez d'obtenir des données supplémentaires dans les fragments, alors vous pouvez essayer d'utiliser :
Place des données à l'aide:
Obtenir des données à l'aide de:
**Mettre les Données en Intention - **
**Obtenir les Données en Intention - **
si nous envoyons valeur entière par l'Intention. lorsque nous devons utiliser 2ème Paramètre 0 dans getIntent().getIntExtra("instituteId",0) sinon nous n'utilisons pas de 0, android me donner l'erreur.
Vous pouvez obtenir n'importe quel type de données supplémentaires à partir de l'intention, peu importe si c'est un objet ou une chaîne ou de tout type de données.
et la plus brefs solution est:
Kotlin
Première Activité
Deuxième Activité
Suggestion
Toujours mettre la clé dans le fichier constante pour plus d'géré moyen.
Juste une suggestion:
Au lieu d'utiliser "id" ou "nom" dans votre je.putExtra("id" est.....), Je suggère, si elle a un sens, à l'aide de la norme actuelle de champs qui peuvent être utilisés avec putExtra(), c'est à dire de l'Intention.EXTRA_something.
Une liste complète peut être trouvée à L'intention (Développeurs Android).
Nous pouvons le faire par des moyens simples:
Dans FirstActivity:
Dans SecondActivity:
Passer à l'intention de la valeur sur la Première Activité:
Recevoir intention sur la deuxième Activité;-
Nous utilisons généralement deux méthode dans l'intention d'envoyer la valeur et à obtenir de la valeur.
Pour l'envoi de la valeur que nous utiliserons
intent.putExtra("key", Value);
et recevoir au cours de l'intention sur une autre activité, nous allons utiliserintent.getStringExtra("key");
pour obtenir l'intention de données commeString
ou utilisez une autre méthode pour obtenir d'autres types de données (Integer
,Boolean
, etc.).La clé peut être de n'importe quel mot clé pour identifier la valeur signifie que la valeur que vous partagez.
Espérons que cela fonctionnera pour vous.
Vous pouvez aussi faire comme ceci
//mettre en valeur dans l'intention
//obtenir la valeur de l'intention
Différents Types d'Extra à partir de l'Intention
Pour accéder aux données à partir d'Intention, vous devez savoir deux choses.
Il existe différentes méthodes dans l'Intention de classe pour extraire différents types de types de données.
Il ressemble à ceci
Donc si vous connaissez le type de votre varibale que vous définissez dans otherActivity vous pouvez utiliser la méthode.
Exemple pour récupérer la Chaîne de votre Activité à partir de l'Intention
Liste des différentes variantes de méthodes pour les différents type de données
Vous pouvez voir la liste des méthodes disponibles dans la Documentation Officielle de L'intention.
Je viens de poster une réponse ici qui traite ce sujet dans un peu plus de détails, y compris quelques solutions de rechange.
Il utilise La vapeur d'API, une nouvelle jQuery inspiré Android cadre que j'ai écrit pour simplifier Android dev. Découvrez l'exemple dans la réponse à comment vous pouvez facilement transférer des données entre les activités.
Aussi il démontre
VaporIntent
, ce qui vous permet d'enchaîner les appels de méthode et d'utiliser la surcharge.put(...)
méthode:Vous pouvez facilement passer des données autour de l'ensemble de votre demande à l'aide de La vapeur d'API, donc j'espère que ça va vous être utile, et d'autres au cours du développement d'une application.