1

当应用程序启动时,我会运行一个自定义弹出窗口,直到用户触摸屏幕。当屏幕被触摸时,我用事件 onTouch() 捕捉它并取消弹出窗口。从这一点开始,我不再需要这个事件了。问题是事件是活跃的,并且每次用户触摸屏幕时都会继续跳跃。有什么办法可以退订这个活动吗?类似于 c# -= eventName. 代码如下:

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

1 回答 1

0

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

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

并简单地使用它如下:

yourView.setOnTouchListener(dummyOnTouchListener);
于 2012-08-02T14:51:07.517 回答