-27

お詫び申し上げます :- 前回この質問を適切に行っていなかったため、私のミスが原因でした。そのため、以下に投稿された回答のほとんどが 「この」キーワードに関連しており、それが多くの反対票を獲得した理由です。誰かを誤解させたくないので、この質問を更新しました。

.

EDIT-1 :

Question-1 私の質問は、 GestureDetectorCompact()コンストラクターで"this" (現在のクラスまたは MainActivity のオブジェクト) を 2 回渡す理由です。

 new GestureDetectorCompat(this,this);

コードブロックの残りの部分を以下に示します。

public class MainActivity extends ActionBarActivity implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener {
  protected void onCreate(){
      private GestureDetectorCompat gestureDetector;
      this.gestureDetector = new GestureDetectorCompat(this,this);
      gestureDetector.setOnDoubleTapListener(this);

   }
}

EDIT-2:非常に近い回答については、次のリンクをクリックできます

EpicPandaForce の回答は私の質問に非常に近く、同様に役に立ちます。

4

6 に答える 6

3

多くのthisOOP 言語に存在するキーワードは、メモリに含まれているオブジェクトの現在のインスタンスへの参照です。

あなたの例:

this.gestureDetector = new GestureDetectorCompat(this,this);

あなたは基本的に言っています:このインスタンス - アクセスは、2つのパラメータで構築さgestureDetectorれた の新しいインスタンスと同じです。この場合、両方とも のこのインスタンスを参照しています。GestureDetectorCompatMainActivity

人々が言うように、これは基本原則であり、Android に移行する前に、Java で強力な基盤を構築することから始める方が有益な場合があります。

于 2015-08-19T16:42:07.630 に答える
1

理解したい場合はthis、おそらくこれを読む必要があり ます

Android は Java ベースのプラットフォームであり、(ネイティブ) アプリを作成するには Java/OOP に関する十分な知識が必要です。

少なくとも 1 冊の Java/OOP の本/チュートリアルを読むことを強くお勧めします。いくつかの良い例は次のとおりです。

良い学習!

于 2015-08-25T20:22:40.507 に答える
0
public class MainActivity 
    extends 
          ActionBarActivity 
    implements 
          GestureDetector.OnGestureListener, 
          GestureDetector.OnDoubleTapListener {

  private Context context;
  private GestureDetector.OnGestureListener onGestureListener;
  private GestureDetector.OnDoubleTapListener onDoubleTapListener;

  private GestureDetector gestureDetector;

  protected void onCreate(Bundle saveInstanceState){
      super.onCreate(saveInstanceState);
      this.context = this; //mainActvity instance as a context
      this.onGestureListener = this; //mainActvity instance as GestureDetector.OnGestureListener
      this.onDoubleTapListener = this; //mainActvity instance as GestureDetector.OnDoubleTapListener

      //the gesture detector of this activity instance
      this.gestureDetector = new GestureDetectorCompat(context, onGestureListener);
                                            //activity as context
                                                  //activity as onGestureListener
      gestureDetector.setOnDoubleTapListener(onDoubleTapListener);
                                              //activity as double tap listener
   }
}

詳細については、GestureDetectorCompat こちらのコンストラクターについてお読みください。

于 2015-08-14T07:16:18.817 に答える
0

ここ、

this.gestureDetector = new GestureDetectorCompat(this,this);

最初の「this」は「コンテキスト」を参照し、2 番目の「this」は「リスナー」を参照しています。

あなたはこれを見て、

public GestureDetectorCompat(Context context, OnGestureListener listener)      {
    this(context, listener, null);
}

GestureDetectorCompat は、2 つの「this」キーワードを渡すコンストラクターです。つまり、1 つ目はコンテキスト (現在のクラスのオブジェクトを参照) で、2 つ目はリスナーです。

于 2017-03-18T11:34:53.690 に答える
-2

this

インスタンス メソッドまたはコンストラクター内では、これは現在のオブジェクト (メソッドまたはコンストラクターが呼び出されているオブジェクト) への参照です。this を使用して、インスタンス メソッドまたはコンストラクター内から現在のオブジェクトの任意のメンバーを参照できます。

Over herethisと呼ばれる現在のアクティビティを指しますMainActivity

于 2015-08-14T07:16:44.613 に答える