如何取消订阅onTouch()事件

时间:2012-08-02 14:36:21

标签: android ontouchlistener

当应用程序启动时,我会运行自定义弹出窗口,直到用户触摸屏幕。当触摸屏幕时,我通过事件onTouch()捕获它并取消弹出窗口。从这一刻起,我不再需要这个活动了。 问题是事件是活着的,并且每次用户触摸屏幕时都会继续跳起来。 有没有办法取消订阅此活动?类似于c# - = eventName。 代码如下:

    @Override
public boolean onTouch(View v, MotionEvent event) {
    if (!_stopToast)
    {
    _hintToast.cancel();
    _stopToast = true;
    }
    return false;
}

1 个答案:

答案 0 :(得分:0)

没有这样的方法(比如说, removeTouchListener 或类似方法),它可以帮助您从视图中删除已定义的触摸侦听器。将null设置为 setOnTouchListener 也无济于事。你可以做的是创建一个OnTouchListener类的新对象引用,它不执行任何操作并在 setOnTouchListener 中设置它。例如:

public final OnTouchListener dummyOnTouchListener = new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent rawEvent) {
        return false;
    }
};

只需使用如下:

yourView.setOnTouchListener(dummyOnTouchListener);