4

私のコードは次のとおりです。

最初に、私は20行目について疑問に思っていました:

私は2つの質問がありました:

a。MY_MESSAGEがcom.example.myfirstapp.MESSAGEに割り当てられるのはなぜですか?b。com.example.myfirstapp.MESSAGEとは何ですか?c。私はどこでもMESSAGEを作ったことがあります。これはr.javaファイルの変数のように自動的に作成されますか、それともどこかに作成する必要がありますか?

次に、40行目について:intent.putExtra(EXTRA_MESSAGE、message);

このメソッドが、呼び出される予定のアクティビティにメッセージを追加するかどうか、または何を追加するかはわかりません...部分的に、インテントのポイントが完全にわからないため、これを理解するのに苦労しています。 私はすべてが何であるかについての私の200の基本的なセクションを読みたいのですが、私は期限を設定し、このプロジェクトのために当分の間そのアプローチをとらないように言われました

Android Docsの説明があれば、その意図は次のとおりです。

インテントオブジェクトであるインテント自体は、実行される操作の抽象的な記述を保持するパッシブデータ構造です。

A.)誰かがその意図が何のために使われているのかを説明したり、単なるドキュメントよりも優れたクイック記事を提供したりできますか?

B.)putExtra()の機能と、これらのパラメーターをより明確に説明します。

  • nameパッケージプレフィックス付きの追加データの名前。
  • value文字列配列のデータ値
4

3 に答える 3

7

AnIntentは適切な名前が付けられています。それはあなたがしたいことです。ドキュメントにあるように:

その最も重要な用途は、活動の開始であり、活動間の接着剤と考えることができます。これは基本的に、実行されるアクションの抽象的な記述を保持するパッシブデータ構造です。

Activityあなたのコードによって、あなたはviaを始めることに精通していますIntent

new Intent(this, DisplayMessageActivity.class);

これは、現在Activityを開始するコンテキストとして使用し、起動Intentするターゲットクラスを提供します。あなたはすでにこれを知っていると思います。基本的に、これIntentはAndroidデバイスが適切な情報を使用して適切なターゲットを起動するためのガイドにすぎません。

あなたの本当の質問に:

  1. 「その意図は何のために使われているのですか?」これは上で説明されています。基本的に、これはOSにターゲットが何であるか、どこから来ているか、どのデータを提供する必要があるかを伝えるために使用されます。あなたはこれのほとんどが気付かずに実際に動いているのを見てきました。このコンストラクターは、「from」と「to」の部分を詳細に記述した、これまで使用してきたコンストラクターです。を使用すると、コードの「to」部分に提供できるデータputExtraが提供されます。Intent
  2. このnameパラメータは、ドキュメント「パッケージプレフィックス付きの追加データの名前」で最もよく要約されています。これはHashMap;のキーのようなものです。パッケージ化するコンテンツの文字列識別子です。混乱を防ぐために、パッケージのプレフィックスを使用するように指示されます。あなたの場合、「com.SG.Three_Piece_Radio.YOURKEYNAME」を使用する必要があります。これはどこでも宣言する必要はなく、定数でもありません。ただの文字列。値は、エクストラ(データ)の内容にすぎません。これは、、、、、、shortなどint、さまざまなものStringになる可能性がParcelableあります。(これらはすべてドキュメントputExtraのさまざまなにあります。)Intent

が受信されると、Intentそれらの同じビットのデータ(たとえばString myStr = getIntent().getStringExtra("com.SG.Three_Piece_Radio.YOURKEYNAME");)を使用して、呼び出したときにそれらを使用して好きなことを行うことがActivityできます。

于 2012-08-15T20:07:10.030 に答える
4

ここでは、インテント自体とその目的についてすばらしい説明をするのに、人々は非常に役立っていると思います。私はこれらの答えから多くを学ぶことができました。

しかし、もう少し説明が必要だと思う小さな側面がありました。

だからあなたの最初の質問に答えるために:-

a。MY_MESSAGEがcom.example.myfirstapp.MESSAGEに割り当てられるのはなぜですか?b。com.example.myfirstapp.MESSAGEとは何ですか?c。私はどこでもMESSAGEを作ったことがあります。これはr.javaファイルの変数のように自動的に作成されますか、それともどこかに作成する必要がありますか?

私の答えは:-

したがって、すべて説明されているように、putExtraは、開始される新しいアクティビティの意図とともに、追加の情報/データを運ぶためのものです。putExtraが運ぶこの追加情報は、キーと値のペアの形式でIntentで提供されます。このKey-Valueペアでは、構文的にキーは常に文字列である必要があります。あなたの場合、値も文字列であり、「キー」は任意のランダムな文字列にすることができます。ここで、システムがKEYを他のアプリのKEYと混同しないようにするために、文字列のパケット構造全体を常に追加する必要があります。したがって、使用します:-

com.example.myfirstapp.MESSAGE

ここで、MESSAGEは、実際にはキーの名前(前述のように、必要な文字列)であり、新しいアクティビティにインテントで渡される文字列値に関連付けられます。

今、あなたは以下も非常にうまく書くことができたでしょう:-

intent.putExtra("com.example.myfirstapp.MESSAGE", message);

それ以外の :-

intent.putExtra(EXTRA_MESSAGE、メッセージ);

ただし、これにより、後で変更を加えるためのコードの柔軟性が低下します。キー名の変更については、どこでも変更する必要があります。したがって、これを回避するために、キーの名前(この場合はMESSAGE)をString変数(この場合はEXTRA_MESSAGE)に割り当てます。

これにより、他のアクティビティが単純なString変数によってこのキーを参照しやすくなります。そして、他のアクティビティ(他の自己説明機能と組み合わせて)にアクセスできるようにするには、次のようにします:-

public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";

何かを見逃したり、どこかでうまくいかなかった場合は、訂正してください。

于 2014-04-17T21:49:18.807 に答える
3

インテントの最も一般的な使用法は、アプリケーション内で新しいアクティビティ(画面)を開始することです(41行目)。extrasバンドルは、アクティビティ間でデータを渡す方法です。エクストラはキーと値のペアとして入力されるため、EXTRA_MESSAGEは特定の値を識別するために使用されるキーであり、別のアクティビティで取得して使用できます。

于 2012-08-15T20:05:58.557 に答える