【问题标题】:OnTouchListener not working inside ActivityOnTouchListener 在 Activity 中不起作用
【发布时间】:2014-06-28 21:37:22
【问题描述】:

所以我的 onTouch 方法有一些问题,它没有做任何事情,起初我认为代码有问题,但后来我这样做了,当我触摸屏幕时它仍然不起作用。有谁知道是什么问题?谢谢。

{ 私人FartPianoView fpv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    fpv = new FartPianoView(this);
    setContentView(fpv);
}

@Override
public boolean onTouchEvent(MotionEvent event)
{
    // TODO Auto-generated method stub
    float currentX = event.getX();
    float currentY = event.getY();
    switch(event.getAction())
    {
        case MotionEvent.ACTION_DOWN:
            finish();

            break;
        case MotionEvent.ACTION_UP:
            finish();
            break;
    }
    return false;
}

}

【问题讨论】:

    标签: android touch-event ontouchlistener


    【解决方案1】:

    您需要覆盖

    public boolean onTouchEvent (MotionEvent e)
    

    Activity 类的方法,不是您要覆盖的方法OnTouchListeneronTouch(...))。然后它应该工作。示例:

    @Override
    public boolean onTouchEvent(MotionEvent e) {
    
        // do your stuff...
    
        return false;
    }
    

    这意味着您正在识别Activity 上的触摸事件,而不是View 上的触摸事件。如果您想通过OnTouchListener 显式检测对View 的触摸,则需要为您的View 设置OnTouchListener

    在你的情况下:

    fpv = new FartPianoView(this);
    fpv.setOnTouchListener(this);
    

    【讨论】:

    • 你的 FartPianoView 怎么样?它会拦截触摸手势吗?
    • 另一个问题,由于某种原因,当我使用 fpv 中的方法时它不起作用。知道为什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    相关资源
    最近更新 更多