Intention::putExtra() et EXTRA_MESSAGE = “com.exemple.myfirstapp.MESSAGE”;
Mon code est comme suit:
Tout d'abord, je me demandais à propos de ligne 20:
J'avais deux questions:
un. Pourquoi est MY_MESSAGE affecté à com.exemple.myfirstapp.MESSAGE?
b. Qu'est-ce que com.exemple.myfirstapp.MESSAGE?
c. Je mever fait MESSAGE n'importe où, est-ce automatiquement à fait comme les variables dans r.java fichier, ou dois-je le faire quelque part?
Deuxièmement, à propos de la ligne 40: l'intention.putExtra(EXTRA_MESSAGE, message);
Je ne sais pas si cette méthode permet d'ajouter un message à la prochaine activité d'être appelé ou quoi... en Partie, j'ai du mal à comprendre ce à cause de ne pas connaître le point de l'Intention pleinement.
je veux lire mes 200 fondamentaux de la section sur ce que tout ce qui est, mais j'ai fixé des délais et on m'a dit de ne pas prendre cette approche pour le moment pour ce projet
Donné, avec l'explication de la Android Docs , je sais que l'intention est:
La Intention lui-même, l'Intention de l'objet, est une passive de données de la structure de la tenue d'une description abstraite d'une opération à effectuer
A.) quelqu'un Pourrait-il expliquer ce qu'est l'intention est utilisé pour ou donner une mieux rapide des articles que juste les docs?
B.) Expliquer ce qu'putExtra( ) ne et et ces paramètres plus clairement:
- nom Le nom de ces données supplémentaires, avec le préfixe de paquet.
- valeur Le tableau de Chaîne de valeur de données
OriginalL'auteur Chris Okyen | 2012-08-15
Vous devez vous connecter pour publier un commentaire.
Un
Intent
porte bien son nom; c'est ce que vous voulez faire. Comme la documentation dit:Par votre code, vous êtes familier avec le démarrage d'une
Activity
viaIntent
:Il utilise votre
Activity
que le contexte à partir duquel commencer laIntent
, et donne à la classe cible pour lancer. Vous le savez déjà, je pense. Fondamentalement, laIntent
est juste un guide pour l'appareil Android afin qu'il se lance sur la droite de la cible avec le droit de l'information.Sur vos vraies questions:
putExtra
, vous de fournir lesIntent
avec des données qu'il peut donner à la partie du code.name
paramètre est le mieux résumé par la documentation: "Le nom des données supplémentaires, avec un paquet prefix." C'est comme une clé dans uneHashMap
; c'est une chaîne de caractères identifiant le contenu de l'emballage. Ils vous disent d'utiliser votre forfait de préfixe, juste pour éviter la confusion. Dans votre cas, vous devriez être en utilisant "com.SG.Three_Piece_Radio.YOURKEYNAME"; cela n'a pas à être déclarée nulle part, ni est-il une constante. Juste une chaîne de caractères. La valeur est le contenu de l'extra (les données); ce peut être une tonne de choses différentes--short
,int
,String
,Parcelable
, et beaucoup plus. (Ceux-ci peuvent tous être trouvés dans les différentsputExtra
s dans leIntention
docs.)Une fois votre
Intent
est reçu, vous pouvez utiliser ces mêmes bits de données (par exemple,String myStr = getIntent().getStringExtra("com.SG.Three_Piece_Radio.YOURKEYNAME");
) et faire ce que vous voulez avec eux dans leActivity
que vous avez appelé.Non, en fait il a juste besoin de toute
Context
qui est dans le même package que votre classe cible. C'est juste afin de trouver la bonne classe (qui est, l'un dans VOTRE application, pas les autres).merci je en obtenir un et deux, mais je ne comprends toujours pas le commentaire que j'ai posée plus haut, c'est tout de toute la chose que je ne comprends pas maintenant. Merci encore une fois ^.^!
Je vais essayer encore une fois... vous devez spécifier un
Context
qui identifie votre application. Disons que vous avez Une application avec vos objectifs de classe, et l'application B a également une classe de la même signature. Offrant uneContext
de l'application A va lui permettre de lancer votre classe cible, au lieu de l'un dans l'app B.Si toutes les classes sont uniques, il n'aurait pas de but, c'est exact. Mais Android s'appuie sur son passé afin de trouver la bonne classe. Donc, si
null
été dépassé, il crash en raison de cette dépendance.OriginalL'auteur Eric
L'utilisation la plus commune d'intention est de commencer de nouvelles activités (écrans)au sein d'une application (ligne 41). Les extras Bundle est une façon de transmettre des données entre les activités. Extras sont saisies sous forme de paires clé-valeur, de sorte EXTRA_MESSAGE est une clé est utilisée pour identifier une valeur particulière de sorte qu'il peut être récupéré et utilisé par une autre activité.
OriginalL'auteur Iain_b
Je pense que les gens ont été très utiles ici dans le fait de donner de grandes explications sur l'Intention elle-même et de son but. J'ai eu beaucoup à apprendre de ces réponses.
Cependant, il y a un petit aspect qui je pense doit un peu plus d'explications.
Donc, pour répondre à votre première question qui dit :-
Ma réponse serait :-
Donc comme expliqué, putExtra est conçu pour le transport de plus d'informations/de données avec l'intention de la nouvelle activité qui va être démarré. Cette information supplémentaire que putExtra porte est donné dans l'Intention sous la forme d'une paire Clé-Valeur.
Dans cette paire Clé-Valeur, la Clé du point de vue syntaxique doit toujours être une Chaîne de caractères.
Dans votre cas, la valeur est également une Chaîne de caractères et la "clé" peut être n'importe quelle chaîne de caractères aléatoires.
Maintenant, assurez-vous que le système ne confondez pas votre CLÉ avec une autre application de la CLÉ, vous devriez toujours ajouter l'ensemble de la structure de paquet de la chaîne. Et par conséquent, vous utilisez :-
où MESSAGE est en fait le nom de la clé (la Chaîne est nécessaire, comme je l'ai mentionné ci-dessus) qui serait associé à la chaîne de la valeur qui serait passé avec l'intention de la nouvelle activité.
Maintenant, vous pourriez très bien écrit ce qui suit :-
au lieu de :-
mais cela réduirait la flexibilité de votre code pour que les modifications soient apportées plus tard. Comme pour tout changement dans le nom de la clé, vous aurez à changer partout. Donc, pour éviter cela, nous sommes plutôt d'attribuer le nom de notre clé (dans votre cas, MESSAGE) à une variable de type String (dans votre cas EXTRA_MESSAGE).
Cela rend également plus facile pour d'autres activités de référence de cette clé par une simple variable de Chaîne. Et donc, pour le rendre accessible à d'autres activités (couplé avec d'autres auto expliqué les caractéristiques)vous faites comme :-
public final static Chaîne EXTRA_MESSAGE = "com.exemple.myfirstapp.MESSAGE";
S'il vous plaît corrigez-moi si il m'est arrivé de rater quelque chose ou qui ont mal quelque part.
"com.blahah"
ou même"string1"
?OriginalL'auteur qre0ct