2011-12-22 88 views
0

我尝试了各种解决方法,但没有为我工作。我有一个包含单元格的滚动视图,每个单元格都有一个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) 

回答

0

假设我们有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做什么。

+0

没有朋友。这不是我要找的。让我解释一下好一点。我的滚动视图中有100x100像素的单元格,每个单元格的clicklisteners为主视图添加视图。现在,当我滚动视图时,我不希望在滚动期间添加视图..所以基本上,我想在处理scr9lling时处理事件.. – 2011-12-24 13:24:14

+0

所以,当您滚动视图时,单元格的clicklisteners被称为? – Leo 2011-12-24 17:24:29

+0

不完全...我可以在任何时间点调用单元格的clicklisteners ..但我不希望它在滚动的持续时间内被调用..在滚动完成后,我希望能够调用clicklisteners ..我认为这将是可能的,如果我在滚动开始时设置一个标志并在滚动完成后重置它。此外,我可以在clicklisteners中检查此标志,并相应地调用它们。但是,无法找到任何方式,我可以在这种情况下设置或重置任何标志..我无法找到任何听众的滚动期间.. – 2012-01-02 09:52:18