2

Here I have a ViewFlipper with a setOnTouchListener that works fine. Then I inflate ReLayNewsItem and later I add it to ViewFlipper.

Now I want WebView (web) to listen for touch events and pass them on to the ViewFlipper.

    final ViewFlipper VFnewsFeed = new ViewFlipper(this);

    VFnewsFeed.setOnTouchListener(new OnTouchListener(){
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (gestureDetectorLR.onTouchEvent(event)) { return true; }
            else { return true; }
        }});

    ///////////////////

    LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    RelativeLayout ReLayNewsItem = (RelativeLayout) inflater.inflate(R.layout.newsitem, null); 

    final WebView web = (WebView)ReLayNewsItem.findViewById(R.id.NewsItemWv);

    web.setOnTouchListener(new OnTouchListener(){
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            VFnewsFeed.dispatchTouchEvent(event); /// ERROR HERE!
            return false;
        }});

Yet it gives me this -

07-14 21:12:43.600: E/AndroidRuntime(14048): FATAL EXCEPTION: main
07-14 21:12:43.600: E/AndroidRuntime(14048): java.lang.StackOverflowError
07-14 21:12:43.600: E/AndroidRuntime(14048):    at life.iface.main$11.onTouch(main.java:1289)
07-14 21:12:43.600: E/AndroidRuntime(14048):    at android.view.View.dispatchTouchEvent(View.java:4605)
07-14 21:12:43.600: E/AndroidRuntime(14048):    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1518)
07-14 21:12:43.600: E/AndroidRuntime(14048):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1320)
...

Any ideas? Thanks! ;)

tanascius
  • 53,078
  • 22
  • 114
  • 136
Roger Travis
  • 8,402
  • 18
  • 67
  • 94

1 Answers1

0

If you return false it means that the event is unhandled.

Depending on your needs try to return true or VFnewsFeed.dispatchTouchEvent(event) in onTouch method instead of false.

Reference to documentatnion

damienix
  • 6,463
  • 1
  • 23
  • 30