2013-04-03 9 views
0

我有一个小problem.Basically我想要做的就是绘制航点,来图,与touches.But我想停止onTouch方法后一个航点增加,导致现在它添加更多点击一个航点,并继续添加下一个触摸。如何一个德勤后停止OnTouch方法

继承人的方法

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode==RESULT_OK) 
    { 
     final MapPoint point=(MapPoint) data.getSerializableExtra("result"); 
     GeoPoint point2 = new GeoPoint(51496994, -134254); 
     point.setGeo(point2); 



        view.setOnTouchListener(new View.OnTouchListener() 
        { 

         @Override 
         public boolean onTouch(View v, MotionEvent e) { 
          GeoPoint geo = null; 
          IProjection project = view.getProjection(); 
          geo=(GeoPoint)project.fromPixels((int)e.getX(),(int)e.getY()); 
          mainDrawer.addGeopointToMap(point.getName(), point.getDesc(), geo); 
          return false; 
         }}); 
    } 
+0

看看动作(向下,向上...)http://developer.android.com/reference/android/view/MotionEvent.html –

回答

2

你可以简单地将ActionListener的设置为 这会使行动称为在第一时间,那么它将是空的,所以它不会再被调用。

 view.setOnTouchListener(new View.OnTouchListener() 
     { 

        @Override 
        public boolean onTouch(View v, MotionEvent e) { 
         GeoPoint geo = null; 
         IProjection project = view.getProjection(); 
         geo=(GeoPoint)project.fromPixels((int)e.getX(),(int)e.getY()); 
         mainDrawer.addGeopointToMap(point.getName(), point.getDesc(), geo); 
         view.setOnTouchListener(null) 
         return false; 
        }}); 
     } 
1

只需使用一个布尔标志:

boolean added = false; 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode==RESULT_OK) { 
     final MapPoint point=(MapPoint) data.getSerializableExtra("result"); 
     GeoPoint point2 = new GeoPoint(51496994, -134254); 
     point.setGeo(point2); 
     view.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent e) { 
       if(!added) { 
        GeoPoint geo = null; 
        IProjection project = view.getProjection(); 
        geo=(GeoPoint)project.fromPixels((int)e.getX(),(int)e.getY()); 
        mainDrawer.addGeopointToMap(point.getName(), point.getDesc(), geo); 
        added = true; 
       } 
       return false; 
      }}); 
} 
+0

是啊,我知道,解决方法很简单,非常感谢很多:) –

+0

@JánSrniček请接受解决办法,如果它回答您的查询 –

相关问题