Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onDoupleTap不会开火_Android_Android Mapview_Gesture_Double Click - Fatal编程技术网

Android onDoupleTap不会开火

Android onDoupleTap不会开火,android,android-mapview,gesture,double-click,Android,Android Mapview,Gesture,Double Click,我想制作一个对双击做出响应的地图视图,并获取单击位置的地理点,然后将其返回给调用方活动。。我在eclipse emulator中测试我的应用程序,但当我双击映射时,什么都没有发生,我的onDoubleTap()方法也没有进入 这是我的密码 public class MYMapActivity extends MapActivity implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener{

我想制作一个对双击做出响应的地图视图,并获取单击位置的地理点,然后将其返回给调用方活动。。我在eclipse emulator中测试我的应用程序,但当我双击映射时,什么都没有发生,我的onDoubleTap()方法也没有进入

这是我的密码

public class MYMapActivity extends MapActivity implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener{

GestureDetector gestureDetector;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mymapview);
        MapView mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);

        gestureDetector = new GestureDetector(getApplicationContext(), this);
        gestureDetector.setOnDoubleTapListener(this);
    }
@Override
    protected boolean isRouteDisplayed() {
        return false;
    }

    @Override
    public boolean onDoubleTap(MotionEvent mev) {
        MapView mapView = (MapView) findViewById(R.id.mapview);
        Projection p = mapView.getProjection();
        GeoPoint geoPoint = p.fromPixels((int) mev.getX(), (int) mev.getY());
        int latitude = geoPoint.getLatitudeE6();
        int longitude = geoPoint.getLongitudeE6();
        Intent resultIntent = new Intent();
        resultIntent.putExtra("latitude", latitude);
        resultIntent.putExtra("longitude", longitude);
        setResult(Activity.RESULT_OK, resultIntent);
        finish();
        return true;
    }

    @Override
    public boolean onDoubleTapEvent(MotionEvent e) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean onDown(MotionEvent e) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void onLongPress(MotionEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
            float distanceY) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void onShowPress(MotionEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        // TODO Auto-generated method stub
        return false;
    }

}

有什么错误或遗漏了什么使我的双击永远不会触发???

让您的活动只在TestureListener中实现
onCreate()
,然后在
onCreate()中执行

    gd.setOnDoubleTapListener(new OnDoubleTapListener()  
            {  //all the override functions of the listener go here // 
});
onCreate()
之后是所有您想要为
onTestureListener
覆盖的函数,包括您忘记的这个函数:

@Override  
    public boolean onTouchEvent(MotionEvent event)  
    {  
        return gd.onTouchEvent(event);//return the double tap events  
    }  

我找出了我的代码中缺少的东西,我在这里为任何一个可能遇到同样问题的人编写

第一:

我必须在初始化gestureDetector对象后添加此行

        gestureDetector = new GestureDetector(this, this);
        gestureDetector.setOnDoubleTapListener(this);
        mapView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                return gestureDetector.onTouchEvent(event);
            }
        });
第二: 我必须在onDown方法中返回true,因为每次单击和双击都会调用它

@Override
public boolean onDown(MotionEvent e) {
    return true;
}
这就是在活动中实现doubleTap listener所需的全部内容。

抱歉,但也不起作用:(…您的代码和我的代码有什么区别