web-dev-qa-db-ja.com

Intent.setData vs Intent.putExtra

私はこのチュートリアルに従うことを試みています:

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

この行をコメントアウトしても、何の影響もありません。

25
Elad Benda

setData()は、データオブジェクト(たとえばファイルなど)のlocationを指すために使用されますが、putExtra()は、単純なデータ型を追加します(SMSテキスト文字列など)。

明確にする2つの例を次に示します。

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

詳細については、 Intents およびsetData()setType()およびsetDataAndType()に関するいくつかの読み方をお勧めします。

37
Alex.F

setData()は、Androidシステムに使用され、暗黙的な意図でデータ属性に一致するアプリケーションコンポーネントを見つけます。


putExtra()は、主にAndroidシステムによって、選択したアプリケーションコンポーネントに情報を渡すために使用されます。

1
Henok Tesfaye

私はここで良い答えを見つけました: https://google-developer-training.gitbooks.io/Android-developer-fundamentals-course-concepts/content/en/Unit%201/21_c_understanding_activities_and_intents.html =

インテントデータフィールド(Intent.setData)を使用します。-開始されたアクティビティに送信する必要がある情報が1つしかない場合。 -その情報がURIで表すことができるデータの場所である場合。

インテントエクストラ(Intent.putExtra)を使用します。-開始されたアクティビティに複数の情報を渡す場合。 -渡したい情報のいずれかがURIで表現できない場合。

インテントデータとエクストラは排他的ではありません。 URIのデータと、開始されたアクティビティがそのURIのデータを処理するために必要な追加情報のエクストラを使用できます。

0
Daniel

_.putExtra_は文字列などを転送することだと思います。 Aramexのように:P

_.setData_は、インテントのデータ型を設定することです。

意図では_Intent.ACTION_INSERT_です。そのため、何かが挿入されるのを待っています。そのため、データを設定します。 .setData(CalendarContract.Events.CONTENT_URI);カレンダーイベントを挿入しました。

0
Ahmed Ekri