如何调用onTouch()方法

时间:2014-12-03 15:01:54

标签: java android

我想请拨打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()位于MainClassonTouch()位于MainClass的子类中。

我怎么能这样做?我怎么能调用drawLine()?

更新:

我试过了:

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

但它已经崩溃了! 请帮忙!我觉得这对一些人很容易..他们不在乎:(

2 个答案:

答案 0 :(得分:1)

你根本不应该打电话给onTouch()。这是Android系统在触摸事件时生成的内容,而不是您应该手动调用的内容。如果没有别的,你会如何找出MotionEvent传递它的内容?

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

答案 1 :(得分:0)

虽然您不应该调用由Android本身调用的Android View的内部方法。 但是,您仍然可以通过在子类上创建实例并通过此对象调用onTouch方法来实现此目的。 检查以下代码:

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