10

putExtra() と setData() の違いは何ですか? Androidのドキュメントを読みましたが、あまり役に立ちません。また、以前の質問Intent.setData と Intent.putExtra がありますが、まだ明確ではありません。前もって感謝します。

4

4 に答える 4

8

setData()

このインテントが動作するデータを設定します。このメソッドは、setType(String) または setTypeAndNormalize(String) によって以前に設定されたタイプを自動的にクリアします。

: Android フレームワークでのスキーム マッチングでは、正式な RFC とは異なり、大文字と小文字が区別されます。そのため、Uri は常に小文字のスキームで記述するか、normalizeScheme() または setDataAndNormalize(Uri) を使用してスキームが小文字に変換されるようにする必要があります。

パラメーター

data: このインテントが現在対象としているデータの Uri。

インテントは、特定のイベントが発生したことを Android システムに通知するために使用されます。インテントは多くの場合、実行する必要があるアクションを記述し、そのようなアクションを実行する必要があるデータを提供します。たとえば、アプリケーションは、特定の URL のブラウザー コンポーネントのインテントを介して開始できます。これを次の例で示します。

    String url = "http://www.google.com";
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(url));
    startActivity(i); 

しかし、Android システムは、特定のインテントに反応できるコンポーネントをどのように識別するのでしょうか?

これには、インテント フィルターの概念が使用されます。インテント フィルターは、アクティビティ、サービス、またはブロードキャスト レシーバーが応答できるインテントのタイプを指定します。したがって、コンポーネントの機能を宣言します。

Android コンポーネントは、インテント フィルタを AndroidManifest.xml に静的に登録するか、ブロードキャスト レシーバの場合はコードを介して動的に登録します。インテント フィルターは、そのカテゴリ、アクション、およびデータ フィルターによって定義されます。追加のメタデータを含めることもできます。

インテントが Android システムに送信されると、Android プラットフォームは Intent オブジェクトに含まれるデータを使用して受信者の決定を実行します。これで、インテントのデータに登録されているコンポーネントが決定されます。複数のコンポーネントが同じインテント フィルターに登録されている場合、ユーザーはどのコンポーネントを開始するかを決定できます。

putExtra()

インテントに拡張データを追加します。

パラメータ:

name: 追加データの名前。

value: 文字列配列のデータ値。

複数の呼び出しを 1 つのステートメントにチェーンするために、同じ Intent オブジェクトを返します。

于 2013-10-03T06:03:32.560 に答える
5

putExtraプリミティブ (またはパーセル可能な) キーと値のペアを追加できます。setDataを渡すことに制限されていUriます。setDatastartActivityForResult など、別のソースからデータを要求する場合に従来から使用されています。

于 2013-10-03T05:52:04.100 に答える