9

के बाद से मिलकर काम नहीं करते हैं मेरे पास एक गैलरी है, जिसमें ऑनआईटम सिलेक्टेड लिस्टनर और ऑनइटम क्लाइकलिस्ट है। तो मैं चित्रों के बीच स्थानांतरित कर सकता हूं, और यदि मैं एक पर क्लिक करता हूं, तो कुछ और होता है (जिस पर मैंने क्लिक किया था)। यह संस्करण 3.0 से पहले ठीक काम किया, लेकिन वहां से (3.0-4.0) के बाद यह onItemClick घटना संभालती है, एक घातक अपवाद तब होता है:गैलेरी ऑनइटम क्लाइक और ऑन टचइवेंट एंड्रॉइड वर्जन 3.0

12-07 18:46:03.008: E/AndroidRuntime(935): FATAL EXCEPTION: main 
12-07 18:46:03.008: E/AndroidRuntime(935): java.lang.NullPointerException 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.GestureDetector.onTouchEvent(GestureDetector.java:587) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.widget.Gallery.onTouchEvent(Gallery.java:937) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.View.dispatchTouchEvent(View.java:5462) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1947) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1708) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1722) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1722) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1722) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1722) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1722) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1722) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1722) 
12-07 18:46:03.008: E/AndroidRuntime(935): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1882) 
12-07 18:46:03.008: E/AndroidRuntime(935): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1361) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.app.Activity.dispatchTouchEvent(Activity.java:2364) 
12-07 18:46:03.008: E/AndroidRuntime(935): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1830) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.View.dispatchPointerEvent(View.java:5638) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2827) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2406) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.os.Looper.loop(Looper.java:137) 
12-07 18:46:03.008: E/AndroidRuntime(935): at android.app.ActivityThread.main(ActivityThread.java:4340) 
12-07 18:46:03.008: E/AndroidRuntime(935): at java.lang.reflect.Method.invokeNative(Native Method) 
12-07 18:46:03.008: E/AndroidRuntime(935): at java.lang.reflect.Method.invoke(Method.java:511) 
12-07 18:46:03.008: E/AndroidRuntime(935): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
12-07 18:46:03.008: E/AndroidRuntime(935): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
12-07 18:46:03.008: E/AndroidRuntime(935): at dalvik.system.NativeStart.main(Native Method) 
+1

मैं पुष्टि कर सकता हूं कि यह समस्या न केवल 'गैलरी' बल्कि 'छवि दृश्य' के लिए भी होती है। अपराधी दृश्य के अंदर 'VelocityTracker' प्रतीत होता है। –

उत्तर

10

मैं एक ही समस्या थी। मैं ITemClick से एक गतिविधि शुरू कर रहा था और वह ऐप को दुर्घटनाग्रस्त कर रहा था।

समस्या, मुझे लगता है कि ऐसा कुछ करने की कोशिश करने के साथ है जो केवल मुख्य धागे (जैसे गतिविधि शुरू करना) पर किया जाना चाहिए।

मैंने एक "हैंडलर" लागू किया है और यह ठीक काम करता है।

एक वैश्विक चर के रूप में एक हैंडलर बनाएँ:

private Handler handler; 

onCreate अंदर हैंडलर सेट करें कि वह मुख्य थ्रेड पर है:

handler = new Handler(); 

onItemClick में, मेरा दिखता हैंडलर के लिए एक पोस्ट बनाएं इस तरह:

handler.post(new Runnable() { 

    @Override 
    public void run() { 
     // Do what ever... 
    } 
}); 
+1

मुझे यह नहीं मिला। अगर समस्या "कुछ ऐसा था जो केवल मुख्य धागे पर किया जाना चाहिए", तो उस "कुछ" में त्रुटि प्रकट नहीं होनी चाहिए? जिस तरह से मैं स्टैक ट्रेस देखता हूं, त्रुटि 'GestureDetector.java: 587', अर्थात् (स्रोत को देखकर) में दिखाई देती है: 'mVelocityTracker.recycle();' इसका मतलब है कि' mvelocityTracker' इस मामले में 'शून्य है '। आप इससे कैसे अनुमान लगाते हैं कि यह एक धागा समस्या है? –

+0

अच्छा समाधान +10 –

+0

मेरे पक्ष –

0

मुझे onTouchEvent(): 587 में एनपीई भी मिला। इसलिए मैंने समर्थन पुस्तकालय से GestureDetectorCompat का उपयोग शुरू किया और यह ठीक काम करता है।

संबंधित मुद्दे