Share TouchEvent between fragments

I have 2 fragments sharing a screen. In both cases, there is a layout that listens to TouchEvents.
When I start TouchEvent on the first fragment, and then slide my finger over the second, TouchEvent is still accepted first, not second.
I tried different options without success. Could this be a solution, handle TouchEvent from activity, and then send it to both fragments?
Any key is welcome =)

+3
source share
1 answer

OK! here is (basically) how I did it:
MyActivity.java:

private ArrayList<MyOnTouchListener> onTouchListeners = new  ArrayList<MusicShaker.MyOnTouchListener>(10);
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    for (MyOnTouchListener listener : onTouchListeners) {
        listener.onTouch(ev);
    }
    return super.dispatchTouchEvent(ev);
}
public void registerMyOnTouchListener(MyOnTouchListener listener){
    onTouchListeners.add(listener);
}
public interface MyOnTouchListener {
    public void onTouch(MotionEvent ev);
}

Fragment1.java:

((MyActivity)getActivity()).registerMyOnTouchListener(new MyActivity.MyOnTouchListener() {

        @Override
        public void onTouch(MotionEvent ev) {
            Log.d("", "Fragment1 got it");
        }
    });

Fragment2.java:

((MyActivity)getActivity()).registerMyOnTouchListener(new MyActivity.MyOnTouchListener() {

        @Override
        public void onTouch(MotionEvent ev) {
            Log.d("", "Fragment2 got it");
        }
    });

This works, but if someone has a better solution, I always listen =)

: , MotionEvent x y , rawX rawy ( View).

+3

All Articles