2009-09-04 11 views
8

जब मैं अपनी गतिविधि से बाहर निकलता हूं (बैक बटन के माध्यम से) तो मुझे अपने ऐप में एक क्रैश का सामना करना पड़ रहा है। जहां तक ​​मैं यह कह सकता हूं एंड्रॉइड कोडबेस में हो रहा है और मेरा नहीं, लेकिन मैं पूरी तरह से इस बात से सहमत नहीं हूं।मेरी गतिविधि से बाहर निकलने पर मुझे क्रैश क्यों हो रहा है?

AndroidRuntime E Uncaught handler: thread main exiting due to uncaught exception 
AndroidRuntime E java.lang.RuntimeException: Unable to stop activity {MyApp/MyApp.MainActivity}: java.lang.NullPointerException 
AndroidRuntime E  at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3097) 
AndroidRuntime E  at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3159) 
AndroidRuntime E  at android.app.ActivityThread.access$2400(ActivityThread.java:112) 
AndroidRuntime E  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1724) 
AndroidRuntime E  at android.os.Handler.dispatchMessage(Handler.java:99) 
AndroidRuntime E  at android.os.Looper.loop(Looper.java:123) 
AndroidRuntime E  at android.app.ActivityThread.main(ActivityThread.java:3948) 
AndroidRuntime E  at java.lang.reflect.Method.invokeNative(Native Method) 
AndroidRuntime E  at java.lang.reflect.Method.invoke(Method.java:521) 
AndroidRuntime E  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782) 
AndroidRuntime E  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 
AndroidRuntime E  at dalvik.system.NativeStart.main(Native Method) 
AndroidRuntime E Caused by: java.lang.NullPointerException 
AndroidRuntime E  at android.app.Activity.performStop(Activity.java:3575) 
AndroidRuntime E  at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3092) 
AndroidRuntime E  ... 11 more 

किसी को भी किसी भी विचार/सुझाव है:

यहाँ एडीबी से स्टैकट्रेस है?

उत्तर

14

कोई मदद नहीं है, क्योंकि बहुत मदद नहीं कर सकता। android.app.Activity.performStop (Activity.java:3575) पर java.lang.NullPointerException

मैं सिर्फ Activity.java

 final int N = mManagedCursors.size(); 
     for (int i=0; i<N; i++) { 
      ManagedCursor mc = mManagedCursors.get(i); 
      if (!mc.mReleased) { 
       mc.mCursor.deactivate(); // line 3575 
       mc.mReleased = true; 
      } 
     } 
जाँच: फिर भी

की वजह से पर देख रहे हैं

क्या आप वाकई सभी कर्सर ठीक से जारी किए गए हैं?

+0

मुझे लगता है कि उन्हें गतिविधि द्वारा प्रबंधित किया जाना चाहिए ... मैंने केवल एक कर्सर पर startManagingCursor() को कॉल किया है जिसका उपयोग मैं कर रहा हूं। क्या यह संभाल नहीं लेना चाहिए? –

+0

दस्तावेज़ों से: यह विधि गतिविधि के जीवन चक्र के आधार पर आपके लिए दिए गए कर्सर के जीवन चक्र को प्रबंधित करने की देखभाल करने की अनुमति देती है। यही है, जब गतिविधि बंद हो जाती है तो यह स्वचालित रूप से दिए गए कर्सर पर निष्क्रिय() को कॉल कर देगी, और जब इसे बाद में पुनरारंभ किया जाता है तो यह आपके लिए आवश्यक() कॉल करेगा। जब गतिविधि नष्ट हो जाती है, तो सभी प्रबंधित कर्सर स्वचालित रूप से बंद हो जाएंगे। –

+0

क्या वास्तव में यह नहीं है कि आपके द्वारा पोस्ट किया गया कोड क्या करना चाहिए? –

0

अपनी गतिविधि में पहले startManagingCursor() विधि कहा जाता है, अपने कर्सर रिक्त है। कर्सर को शून्य न होने दें।

+1

तो, वास्तव में क्या कहा गया था, 2 साल पहले? –

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