Java 如何调用onTouch()方法

Java 如何调用onTouch()方法,java,android,Java,Android,我想调用onTouch()方法,该方法与我想从中调用的方法OnOptions ItemSelected()属于不同的类,下面是代码: public boolean onTouch(View v, MotionEvent event) { float downx = 0, downy = 0, upx = 0, upy = 0; int action = event.getAction(); switch (action)

我想调用
onTouch()
方法,该方法与我想从中调用的方法
OnOptions ItemSelected()
属于不同的类,下面是代码:

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;
OnOptions ItemSelected()
位于
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()
,以便它调用一个带有适当参数的方法,该方法在触摸事件发生时表现正常;然后选择你的
onoptionItemSelected()
也可以调用该方法。

尽管您不应该调用由操作系统本身调用的Android View内部方法。 但是,您仍然可以通过在子类上创建一个实例并通过该对象调用onTouch方法来实现这一点。 检查以下代码:

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

我有两个touch listener,如何触发一个特定的呢?@New2Android这正是问题所在!你应该看看
onTouch()
方法在触摸输入时做了什么;然后你应该这样做。你根本不应该触发touch listener。它是由系统触发的。我如何调用drawline()那么?你能提出一个解决方案吗?@New2Android如果不看你所有的代码,不了解你想要实现的目标,你就不可能提出一个好的解决方案。但我真的认为你最好的策略是找到一些安卓教程并仔细阅读它们,否则你就有编写你不理解的代码的危险我的代码是:MyView sub_class=newmyview(getBaseContext());sub_class.onTouch(v,event);我在sub_class.onTouch(v,event)上有一个错误;如何解决它?您在传递的事件中设置了任何操作吗?我看到第三行查找操作:“event.getAction()”,这是该错误的原因。如果调用该方法正确,请接受答案!我肯定会接受它,请帮助我处理事件错误