GestureDetectorCompat构造函数的参数

时间:2015-08-14 07:12:14

标签: android gesturedetector this-keyword

  

道歉: -   由于我的错误,因为上次我没有正确地问这个问题,这就是为什么下面发布的大多数答案都与"这个" 关键字有关这就是我得到那么多选票的原因。 所以我更新了这个问题,因为我不想误导任何人。

  

EDIT-1:

     

问题1 我的问题是为什么我们在 GestureDetectorCompact中两次传递"这个" (当前类或MainActivity的对象)两次()构造函数

 $date = date('Y-m-d');

  $one = DB::table('talbe')
    ->select('touched_at')
    ->where('touched_at', 'like', "$date%")
    ->distinct('C_ID')
    ->count();

下面给出了剩下的代码块,

 new GestureDetectorCompat(this,this);
  

EDIT-2:非常接近的答案,您可以点击以下链接

     

EpicPandaForce   的答案非常接近我的问题,也很有帮助。

6 个答案:

答案 0 :(得分:3)

this关键字存在于许多OOP语言中,是对包含在内存中的对象的当前实例的引用。

你的例子:

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

你基本上是这样说的: 此实例 - 访问gestureDetector等于用{2}参数构造的GestureDetectorCompat的新实例,在这种情况下,它们都引用此MainActivity实例。

正如人们所说,这是一个基本原则,在开始使用Android之前,首先要建立一个强大的Java基础可能会更有利。

答案 1 :(得分:1)

如果您想了解this,可能应该阅读this

Android是一个基于Java的平台,为了制作(本机)应用程序,需要良好的Java / OOP知识。

我强烈建议您阅读至少一本Java / OOP书籍/教程。一些很好的例子是:

好学习!

答案 2 :(得分: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 here

的构造函数

答案 3 :(得分:0)

下面,

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

第一个“this”指的是'context',第二个“this”指的是'listener'。

你可以看一下,

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

GestureDetectorCompat是我们传递两个“this”关键字的构造函数,意思是首先是context(指向当前类的对象),第二个是侦听器。

答案 4 :(得分:0)

GestureDetectorCompat构造函数的定义是,

  
    

GestureDetectorCompat(GestureDetector.OnGestureListener,     GestureDetector.OnDoubleTapListener){}

  

所以需要2个参数来调用这个函数。在你的情况下,MainActivity正在实现两个Listener接口,这就是为什么你需要在两个参数中传递相同的引用来处理两个接口的回调。

在其他一些实现中,两个接口也可以单独处理。

答案 5 :(得分:-2)

this

在实例方法或构造函数中,这是对当前对象的引用 - 正在调用其方法或构造函数的对象。您可以使用此方法在实例方法或构造函数中引用当前对象的任何成员。

此处MainActivity指的是名为{{1}}

的当前活动