2017-11-29 20 views
5

Tôi nhận được báo cáo lỗi trong Crashlytics cho NPEs trong SpannableStringInternal nhưng không thể tái tạo sự cố trên bất kỳ điện thoại nào hoặc xác định nguồn gốc của nó. Tôi đang gọi Internet để giúp tôi xác định vấn đề cơ bản.android.widget.Editor: NullPointerException trong SpannableStringInternal

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Object.hashCode()' on a null object reference 
    at android.text.SpannableStringInternal.hashCode(SpannableStringInternal.java:480) 
    at android.text.SpannedString.hashCode(SpannedString.java) 
    at java.util.Objects.hashCode(Objects.java:98) 
    at android.view.inputmethod.CursorAnchorInfo.<init>(CursorAnchorInfo.java:435) 
    at android.view.inputmethod.CursorAnchorInfo.<init>(CursorAnchorInfo.java) 
    at android.view.inputmethod.CursorAnchorInfo$Builder.build(CursorAnchorInfo.java:391) 
    at android.widget.Editor$CursorAnchorInfoNotifier.updatePosition(Editor.java:4390) 
    at android.widget.Editor$PositionListener.onPreDraw(Editor.java:3250) 
    at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1013) 
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2492) 
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1509) 
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7051) 
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:927) 
    at android.view.Choreographer.doCallbacks(Choreographer.java:702) 
    at android.view.Choreographer.doFrame(Choreographer.java:638) 
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:913) 
    at android.os.Handler.handleCallback(Handler.java:751) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6692) 
    at java.lang.reflect.Method.invoke(Method.java) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) 

Từ nguồn có vẻ như bằng cách nào đó con trỏ/lựa chọn đang gây ra khoảng trống được đặt.

Các lỗi chỉ xảy ra trên Android 7: Crashlytics device info

+4

Tôi đoán chúng tôi sẽ không giúp đỡ rất nhiều nếu bạn không cung cấp cho chúng tôi một số mã ví dụ. – Al0x

+2

@ Al0x Tôi có thể đăng toàn bộ mã ứng dụng ở đây và cả bạn và tôi sẽ không khôn ngoan hơn. Ứng dụng chứa hơn 50 'EditText' với hành vi khác nhau. Tôi không có ý tưởng khi nào và nơi xảy ra sự cố, do đó không thể đăng bất kỳ mã liên quan nào. – Mannaz

+1

Đây là một điều khó khăn. Tôi thấy trong 'Build' cho' CursorAnchorInfo' rằng nó không phải là chủ đề an toàn. (Xem [tại đây] (https://github.com/aosp-mirror/platform_frameworks_base/blob/master/core/java/android/view/inputmethod/CursorAnchorInfo.java#L255)). Bạn có đang điều khiển nhịp trên các luồng không? – Cheticamp

Trả lời

0

Đối mặt cùng một vấn đề. Trong trường hợp của tôi, nó được gây ra bởi trình phân tích cú pháp văn bản phong phú. cwac-richedit phù thủy đã được đặt khoảng trống trong khi phân tích html thành spannable. Đây là fix cho nó.

Kiểm tra nơi bạn nhận được CharSequence được đặt thành EditText, rất có khả năng khoảng trống đó được đặt ở đâu đó ở đó. Trong trường hợp của tôi, đó không phải là con trỏ hoặc lựa chọn đã thiết lập những nhịp đó.

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