Android - 滚动时禁用触摸事件
问题描述:
我尝试了各种解决方法,但没有为我工作。我有一个包含单元格的滚动视图,每个单元格都有一个onclicklistener。这些onclicklisteners添加视图到主视图,我清除onscrollchanged这些子视图。但如果我尝试点击这些单元格同时滚动动作,该应用程序崩溃。我尝试在try catch块内添加视图,但是没有发现异常并且应用程序崩溃。Android - 滚动时禁用触摸事件
所以我想在滚动进行时禁用触摸事件。有没有办法做到这一点? 崩溃日志如下: -
12-22 13:25:34.420: DEBUG/FlurryAgent(7877): Error logged: uncaught
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): FATAL EXCEPTION: main
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): java.lang.NullPointerException
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2188)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.View.draw(View.java:9282)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.ViewGroup.drawChild(ViewGroup.java:2584)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.ViewGroup.drawChild(ViewGroup.java:2582)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.ViewGroup.drawChild(ViewGroup.java:2582)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.ViewGroup.drawChild(ViewGroup.java:2582)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.ViewGroup.drawChild(ViewGroup.java:2582)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.View.draw(View.java:9282)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.widget.FrameLayout.draw(FrameLayout.java:419)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1924)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.ViewRoot.draw(ViewRoot.java:1666)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.ViewRoot.performTraversals(ViewRoot.java:1381)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.view.ViewRoot.handleMessage(ViewRoot.java:2003)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.os.Handler.dispatchMessage(Handler.java:99)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.os.Looper.loop(Looper.java:132)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at android.app.ActivityThread.main(ActivityThread.java:4025)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at java.lang.reflect.Method.invokeNative(Native Method)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at java.lang.reflect.Method.invoke(Method.java:491)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
12-22 13:25:34.430: ERROR/AndroidRuntime(7877): at dalvik.system.NativeStart.main(Native Method)
答
假设我们有2个事件,事件1和事件2,当事件1被调用时,它会调用事件2。所以你想禁用event2? 在一般情况下,我通常创建变量
isDisable =假
然后覆盖事件2和传递isDisable以某种方式EVENT2,假设我们获得通过isDisable到事件2,则关于事件1 shoule代码是
isDisable = true;
call event2
isDisable = false;
和内部事件2,你必须检查isDisable = true或false来决定调用event2做什么。
没有朋友。这不是我要找的。让我解释一下好一点。我的滚动视图中有100x100像素的单元格,每个单元格的clicklisteners为主视图添加视图。现在,当我滚动视图时,我不希望在滚动期间添加视图..所以基本上,我想在处理scr9lling时处理事件.. – 2011-12-24 13:24:14
所以,当您滚动视图时,单元格的clicklisteners被称为? – Leo 2011-12-24 17:24:29
不完全...我可以在任何时间点调用单元格的clicklisteners ..但我不希望它在滚动的持续时间内被调用..在滚动完成后,我希望能够调用clicklisteners ..我认为这将是可能的,如果我在滚动开始时设置一个标志并在滚动完成后重置它。此外,我可以在clicklisteners中检查此标志,并相应地调用它们。但是,无法找到任何方式,我可以在这种情况下设置或重置任何标志..我无法找到任何听众的滚动期间.. – 2012-01-02 09:52:18