I have looked at numerous examples online and they all have gesturelistener implemented this way. I can't get android to pick up the gesture event the value of myText doesnt' change and i don't get any output in logcat. What am i doing wrong?
public class MainActivity extends Activity {
private GestureDetector gDetector;
private TextView myText;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    gDetector = new GestureDetector(this, new MyOnGestureListener());
    myText = (TextView) findViewById(R.id.mytext);
    myText.setText("Test");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}
class MyOnGestureListener extends SimpleOnGestureListener implements
        OnGestureListener {
    @Override
    public boolean onDown(MotionEvent e) {
        Log.d("Main", "did");
        myText.setText("hi");
        // TODO Auto-generated method stub
        return true;
    }
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        myText.setText("hi");
        Log.d("Main", "did");
        // TODO Auto-generated method stub
        return true;
    }
    @Override
    public void onLongPress(MotionEvent e) {
        Log.d("Main", "did");
        myText.setText("hi");
        // TODO Auto-generated method stub
    }
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2,
            float distanceX, float distanceY) {
        Log.d("Main", "did");
        myText.setText("hi");
        // TODO Auto-generated method stub
        return true;
    }
    @Override
    public void onShowPress(MotionEvent e) {
        Log.d("Main", "did");
        myText.setText("hi");
        // TODO Auto-generated method stub
    }
    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        Log.d("Main", "did");
        myText.setText("hi");
        // TODO Auto-generated method stub
        return true;
    }
}
}
The missing part is that you don't link your GestureListener to a touch event.
So you can override OnTouchListener like this:
@Override
public boolean onTouchEvent(MotionEvent me) {
    return gDetector.onTouchEvent(me);
}
Or if you want to enable your GestureDetector on a specific view:
view.setOnTouchListener(new OnTouchListener{
    @Override
    public boolean onTouchEvent(MotionEvent me) {
       return gDetector.onTouchEvent(me);
    }
})
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With