8

以前のAndroidプログラミングチュートリアル(192ページ)では、の実装が示されていLunchList#onOptionsItemSelectedます。この実装内では、2つIntentのが渡されstartActivityます。1つはコンストラクターが渡されLunchList.this、もう1つはコンストラクターが渡されthisます。

違いは何ですか?

ここの78行目から91行目を参照してくださいonOptionsItemSelected内部クラス内でどのように宣言されていないかに注意してください。

Android / Javaでは、thisイベントハンドラーまたはリフレクションを介した関数バインディングのコンテキスト内で変更の値はありますか?両方のIntentインスタンスを渡すことができますthisか?

4

3 に答える 3

11

Java ではthis、包含クラスをClassName.this指し、名前が である最初の包含クラスを指しClassNameます。イベント ハンドラーは通常、匿名の内部クラスとして記述されるため、イベント ハンドラーのクラス (イベント ハンドラーのクラスではなく) を含むクラスを参照する場合はContainingClass.this、 ではなくを指定する必要がありますthis

参照: http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.8.4

于 2012-09-26T03:55:46.877 に答える
3

Intent内部でを作成するInner Class場合ClassName.this(ここでは className は Activity クラス名である必要があります) Intent、クラス内で作成するActivity場合は を使用できますthis

于 2012-09-26T03:54:22.750 に答える
1

この例では、どちらの条件でもアクティビティを開始するクラスは同じままであるため、違いはありません。Intent の最初のパラメーターは、アクティビティが起動され、バンドル データが渡されるクラスのコンテキストを参照します。

于 2012-09-26T05:12:27.017 に答える