2011-12-22 89 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