2009-09-04 27 views
8

Tôi đang gặp sự cố trong ứng dụng khi tôi thoát (thông qua nút quay lại) trong Hoạt động của tôi. Cho đến nay tôi có thể nói điều này đang xảy ra trong hệ thống codebase của Android chứ không phải của tôi, nhưng tôi không hoàn toàn tin vào điều đó.Tại sao tôi gặp sự cố khi thoát Hoạt động của tôi?

Đây là stacktrace từ adb:

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 

Bất cứ ai có bất cứ ý tưởng/kiến ​​nghị?

Trả lời

14

Không thể giúp ích nhiều, vì không có mã. Vẫn đang tìm kiếm tại

Nguyên nhân: java.lang.NullPointerException tại android.app.Activity.performStop (Activity.java:3575)

tôi chỉ kiểm tra 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; 
      } 
     } 

Bạn có chắc chắn tất cả con trỏ được phát hành đúng cách không?

+0

Tôi nghĩ rằng chúng nên được quản lý bởi Hoạt động ... Tôi đã gọi startManagingCursor() trên con trỏ duy nhất mà tôi đang sử dụng. Không nên điều này xử lý? –

+0

Từ tài liệu: Phương pháp này cho phép hoạt động chăm sóc quản lý vòng đời của Con trỏ cho bạn dựa trên vòng đời của hoạt động. Đó là, khi hoạt động được dừng lại, nó sẽ tự động gọi deactivate() trên Cursor đã cho, và khi nó được khởi động lại sau đó nó sẽ gọi requery() cho bạn. Khi hoạt động bị hủy, tất cả các con trỏ được quản lý sẽ tự động bị đóng. –

+0

Đó không phải là thực sự chính xác những gì mã bạn đăng cần được làm? –

0

Trong hoạt động của bạn trước khi phương pháp startManagingCursor() được gọi, con trỏ của bạn là null. Đừng để Con trỏ rỗng.

+1

Vì vậy, chính xác những gì đã được nói, hơn 2 năm trước? –

Các vấn đề liên quan