简体   繁体   English

方法未调用

[英]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. 为此,您应该覆盖要为其接收触摸事件的视图的OnTouchListener 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. onTouchEvent仅适用于视图。 Activities are not views themselves. 活动不是视图本身。 Instead, you need to set an onTouchListener. 相反,您需要设置一个onTouchListener。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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