I have an Activity that implements a Gesture Detector to catch the user fling input for navigation to other screens. That was working fine - but - I recently updated a class that derives from my BaseActivity to add an onClick function and now that click event seems to block the onFling from being hit. The onClick is tied to a TextView area (in a LinearLayout) I have on my screen. The resultsClick method is wired to the TextView using its onClick property in the XML layout.
I've tried changing the return values in onSingleTapUp and onDown without luck. I've also tried adding log statements to all the functions below as well. None of them fire when I fling in the TextView area but they do on other areas of the screen. Maybe I am using the wrong search terms, but I couldn't seem to find an example that addressed this - yet I'm sure this problem has been solved before. public class DerivedActivity extends BaseActivity { ... /** * resultsClick - The user clicked on the Results area * @param v */ public void resultsClick(View v) { try { Log.i(this.toString(), "resultsClick"); startActivity(new Intent(this, Results_TabHost.class )); } catch (Exception e) { Log.e(this.toString(), "Exception" + e.toString()); } }// end resultsClick ... } Here is the base class that implements the GestureListener code public class BaseActivity extends ActivityGroup implements OnGestureListener { ... private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int SWIPE_THRESHOLD_VELOCITY = 200; public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { try { Log.i(this.toString(), "onFling"); // jump right out if not a swipe/fling 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 ) { Log.i(this.toString(), "fling left"); rightArrowClick(null); } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY ) { Log.i(this.toString(), "fling right"); leftArrowClick(null); } } catch (Exception e) { Log.e(this.toString(), "Exception" + e.toString()); } return true; }// end onFling // These next methods we are required to have - even if unused - // in order for the Gesture Handling to work @Override public boolean onTouchEvent(MotionEvent motionEvent) { if(this.gestureDetector.onTouchEvent(motionEvent)) { return true; } //no gesture detected, let Activity handle touch event return super.onTouchEvent(motionEvent); } @Override public void onLongPress(MotionEvent e) { // Intentionally not handling - must be overridden by listener class } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // Intentionally not handling - must be overridden by listener class // Intentionally returning true - per code examples return true; } @Override public void onShowPress(MotionEvent e) { // Intentionally not handling - must be overridden by listener class } @Override public boolean onSingleTapUp(MotionEvent e) { // Intentionally not handling - must be overridden by listener class // Intentionally returning true - per code examples return true; } @Override public boolean onDown(MotionEvent e) { // Intentionally not handling - must be overridden by listener class // Intentionally returning true - per code examples return true; } ... } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en