J'essaie de suivre ce tutoriel:
http://www.vogella.com/articles/AndroidCalendar/article.html
Je comprends ce que putExtra fait
mais je n'arrive pas à comprendre ce que setData () signifie?
Android Docs, n'était pas très utile:
Set the data this intent is operating on.
qu'est-ce que cela signifie pour la constante
intent.setData(CalendarContract.Events.CONTENT_URI);
?
Il ne semble y avoir aucun effet lorsque je commente cette ligne.
setData()
est utilisé pour pointer sur le location d'un objet de données (comme un fichier, par exemple), alors que putExtra()
ajoute types de données simples (tel qu'une chaîne de texte SMS par exemple).
Voici deux exemples à clarifier:
setData()
utilisé ici pour définir l'emplacement d'un fichier que vous souhaitez partager.
File fileToShare = new File("/sdcard/somefile.dat");
Intent i = new Intent();
i.setAction(Intent.ACTION_SEND);
i.setData(Uri.fromFile(fileToShare));
startActivity(i);
putExtra()
est utilisé ici pour définir le contenu de texte que vous souhaitez partager.
Intent i = new Intent();
i.setAction(Intent.ACTION_SEND);
String textBodyString = "some text";
i.putExtra(Intent.EXTRA_TEXT, textBodyString);
i.setType(HTTP.PLAIN_TEXT_TYPE);
Pour plus d'informations, je suggère quelques lectures sur Intentions et les fonctions setData()
, setType()
et setDataAndType()
setData () est utilisé par le système Android pour trouver un composant d'application correspondant à l'attribut de données dans une intention implicite.
putExtra () est principalement utilisé pour transmettre des informations au composant d'application sélectionné, par le système Android.
J'ai trouvé une bonne réponse ici: https://google-developer-training.gitbooks.io/Android-developer-fundamentals-course-concepts/content/fr/Unit%201/21_c_understanding_activities_and_intents.html
Utilisez le champ de données d'intention (Intent.setData): - Lorsque vous ne devez envoyer qu'une information à l'activité démarrée .- Lorsque cette information est un emplacement de données pouvant être représenté par un URI .
Utilisez les extras d’intention (Intent.putExtra): - Si vous souhaitez transmettre plusieurs informations à l’activité démarrée .- Si l’une des informations que vous souhaitez transmettre ne peut pas être exprimée par un URI.
Les données d'intention et les extras ne sont pas exclusifs; vous pouvez utiliser des données pour un URI et des extras pour toute information supplémentaire dont l'activité démarrée a besoin pour traiter les données dans cet URI.
Je pense que .putExtra
est de transférer une chaîne ou quelque chose. comme Aramex: P
tandis que .setData
définit le type de données de l’intention.
voir dans l'intention c'est Intent.ACTION_INSERT
. Donc, il attend que quelque chose soit inséré. C'est pourquoi vous définissez les données. .setData(CalendarContract.Events.CONTENT_URI);
Vous avez inséré les événements de calendrier.