如何调用 onTouch() 方法



我想调用onTouch()方法,该方法与我想调用的方法onOptionsItemSelected()属于不同的类,这是代码:

public boolean onTouch(View v, MotionEvent event) {
             float downx = 0, downy = 0, upx = 0, upy = 0;
            int action = event.getAction();
            switch (action) {
            case MotionEvent.ACTION_DOWN:
              downx = event.getX();
              downy = event.getY();
              break;
            case MotionEvent.ACTION_MOVE:
              break;
            case MotionEvent.ACTION_UP:
              upx = event.getX();
              upy = event.getY();
              mCanvas.drawLine(downx, downy, upx, upy, mPaint);
              invalidate();
              break;
            case MotionEvent.ACTION_CANCEL:
              break;
            default:
              break;
            }
            return true;
          }

我想从以下位置调用onTouch()的方法:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.LINE_ID:
            //i want to call it here            
            return true;

onOptionsItemSelected()MainClass,但onTouch()MainClass的子类中。

该怎么做?我怎么能调用drawLine()?

更新:

我试过了:

View v = null; MotionEvent event = null;
            MyView sub_class = new MyView(getBaseContext());
            sub_class.onTouch(v, event);

但它崩溃了!请帮忙!我认为这对某些人来说非常容易。他们不在乎:(

你真的不应该打电话给onTouch()。这是 Android 系统在发生触摸事件时生成的内容,而不是您应该手动调用的内容。如果不出意外,您将如何计算出通过它MotionEvent

您需要做的是在出现触摸事件时调用onTouch()方法调用的任何方法。重构onTouch(),使其调用具有适当参数的方法,该方法在发生触摸事件时行为适当;然后让你的onOptionsItemSelected()也调用该方法。

虽然你不应该调用由操作系统本身调用的Android View的内部方法。但是,您仍然可以通过简单地在子类上创建一个实例并通过此对象调用 onTouch 方法来执行此操作。检查下面的代码:

SubClass sub_class = new SubClass();
sub_class.onTouch(v, event);

最新更新