java - 如何调用 onTouch() 方法

标签 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()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() 也调用该方法。

关于java - 如何调用 onTouch() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27274935/

相关文章:

java - Spring:如何从单个模板定义动态创建多个bean

android - 使用 react-native-sensors 的磁力计的平滑方向指南针

android - 应用程序在 Android 中的 SocketTimeoutException 上崩溃

java - spring-security 解耦角色和权限

java - 确定一个列表是否由 Java 8 中的 anagram 元素组成

java - 在 Java 中对 ArrayList<List> 进行排序

Android异步rest web请求设计

java - 如何从 libgdx 中的文件系统读取特殊字符

android - Genymotion 无法创建虚拟设备。我收到消息“无法创建虚拟设备 : Failed to import OVA"

java - 加载不存在类的首选项