简体   繁体   中英

method is not invoked

method is not invoked

//view flipper code 
......................................
public class HomeActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
private ViewFlipper mViewFlipper;
private float initialX;
private Context mContext;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    mContext = this;
    mViewFlipper = (ViewFlipper) this.findViewById(R.id.view_flipper);

    //play and stop button for image slideshow(working fine)

    findViewById(R.id.play).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mViewFlipper.setAutoStart(true);
            mViewFlipper.setFlipInterval(1000);
            mViewFlipper.startFlipping();
        }
    });

    findViewById(R.id.stop).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mViewFlipper.stopFlipping();

        }
    });

}
//The below method is not getting invoked

public boolean onTouchEvent(MotionEvent touchevent) {
    switch (touchevent.getAction()) {
        case MotionEvent.ACTION_DOWN:
            initialX = touchevent.getX();
            System.out.println(initialX); 
            //not displaying value in android 
            monitor
            break;
        case MotionEvent.ACTION_UP:
            float finalX = touchevent.getX();
            System.out.println(finalX);
            //not displaying value in android monitor
            if (initialX > finalX) {
                if (mViewFlipper.getDisplayedChild() == 0)
                 //image flipper has 3 images
                    break;
                mViewFlipper.showNext();
            } else {
                if (mViewFlipper.getDisplayedChild() == 2)
                    break;
                mViewFlipper.showPrevious();
            }
            break;
    }
    return false;
}
}

Well, It seems you're trying to perform some action on touching some view. For that you should override OnTouchListener of the view for which you want to receive touch event. It can be done as follows:

findViewById(R.id.your_view_id).setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (touchevent.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    initialX = touchevent.getX();
                    System.out.println(initialX);
                    break;
                case MotionEvent.ACTION_UP:
                    float finalX = touchevent.getX();
                    System.out.println(finalX);
                    if (initialX > finalX) {
                        if (mViewFlipper.getDisplayedChild() == 0)
                            //image flipper has 3 images
                            break;
                        mViewFlipper.showNext();
                    } else {
                        if (mViewFlipper.getDisplayedChild() == 2)
                            break;
                        mViewFlipper.showPrevious();
                    }
                    break;
            }
            return false;
        }
    });

onTouchEvent is only for Views. Activities are not views themselves. Instead, you need to set an onTouchListener.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM