27

我正在尝试遵循本教程:

http://www.vogella.com/articles/AndroidCalendar/article.html

我了解 putExtra 的作用

但我不明白 setData() 是什么意思?

Android Docs 并没有太大帮助:

Set the data this intent is operating on.

这对常数意味着什么

intent.setData(CalendarContract.Events.CONTENT_URI);?

当我注释掉这一行时,似乎没有任何影响。

4

4 回答 4

43

setData()用于指向数据对象的位置(例如文件),同时putExtra()添加简单的数据类型(例如 SMS 文本字符串)。

这里有两个例子来说明:

setData()此处用于设置要共享的文件的位置。

File fileToShare = new File("/sdcard/somefile.dat");
Intent i = new Intent();
i.setAction(Intent.ACTION_SEND);
i.setData(Uri.fromFile(fileToShare));
startActivity(i);

putExtra()此处用于设置要分享的文字内容。

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);

有关更多信息,我建议阅读有关IntentssetData(),setType()setDataAndType()

于 2014-01-26T12:39:50.720 回答
5

setData() 用于 Android 系统在隐式意图中查找与数据属性匹配的应用程序组件。


putExtra() 主要用于通过Android系统将一些信息传递给选定的应用程序组件。

于 2018-05-19T07:04:22.663 回答
1

我认为那.putExtra是转移一个字符串或其他东西。像 Aramex :P

while.setData是设置意图的数据类型。

看它的意图Intent.ACTION_INSERT。所以它正在等待插入一些东西。这就是你设置数据的原因。.setData(CalendarContract.Events.CONTENT_URI);您插入了日历事件。

于 2013-09-14T09:24:56.787 回答
1

我在这里找到了一个很好的答案:https ://google-developer-training.gitbooks.io/android-developer-fundamentals-course-concepts/content/en/Unit%201/21_c_understanding_activities_and_intents.html

使用意图数据字段(Intent.setData): - 当您只有一条信息需要发送到已启动的活动时。- 当该信息是可以由 URI 表示的数据位置时。

使用intent extras (Intent.putExtra): - 如果你想将不止一条信息传递给已启动的活动。- 如果您要传递的任何信息都不能通过 URI 表达。

意图数据和附加信息不是排他性的;您可以将 data 用于 URI,并将 extras 用于已启动的活动处理该 URI 中的数据所需的任何其他信息。

于 2018-08-13T22:58:11.210 回答