2012-03-09 91 views
0

我从android开发开始。我想做一个日历活动。我有一个活动,它实现了OnGestureListener,方法如onFling(),以便detect swipe gestures,并更改日历的月份。这工作正常。Android:错误的侦听器行为?

之后,我的日历有几个单元格,每天一个。我为每个单元添加了一个onclick侦听器,以便为今天添加事件。当我这样做时,我的gestureListener停止工作,并且只捕获单元格上的单击事件,但是滑动手势不起作用(方法从未被调用过(onFling()))。我能做什么?

这是我的代码:

public class Calendar extends Activity implements OnGestureListener{ ... 

//OnFling method that detects the swipe gesture 
@Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 
    { 
     try { 
      if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
       return false; 
      // right to left swipe 
      if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       Toast.makeText(getApplicationContext(), "Left Swipe", Toast.LENGTH_SHORT).show(); 
      } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       Toast.makeText(getApplicationContext(), "Right Swipe", Toast.LENGTH_SHORT).show(); 
      } 
      else if(e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       Toast.makeText(getApplicationContext(), "Swipe up", Toast.LENGTH_SHORT).show(); 
      } else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       Toast.makeText(getApplicationContext(), "Swipe down", Toast.LENGTH_SHORT).show(); 
      } 
     } catch (Exception e) { 
     Toast.makeText(this, "exception", Toast.LENGTH_SHORT).show(); 
     } 

     return true; 
    } 

//This is the method attached to each cell for onclick event 
public void showDialog(View v){ 
    TextView dia = (TextView)v.findViewWithTag("dia");  
    Intent i = new Intent(this, DialogoCalendario.class); 
    i.putExtra("dia",(String) dia.getText()); 
    i.putExtra("mes", ((TextView) findViewById(R.id.tbMes)).getText().toString()); 
    startActivity(i); 
} 
+0

显示您的代码并查看以下链接https://www.google.co.in/search?q=detect+swipe+gestures+android&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en -US:official&client = firefox-a – Shruti 2012-03-09 13:12:09

+0

我更新了我的帖子,代码为 – user1116714 2012-03-09 13:47:42

回答

0

貌似查看你在哪里使用GestureListener是失去焦点,当你用电池工作。当你完成细胞时,请尝试使用calendarCellView.clearFocus();

+0

我试过了,但仍然存在问题... – user1116714 2012-03-09 14:22:37