2014-12-18 20 views
26

Tôi đang gặp vấn đề này một cách ngẫu nhiên trong tháng vừa qua:Appcompat "java.lang.IllegalArgumentException: tham số phải là một hậu duệ của quan điểm này" trong ViewGroup.offsetRectBetweenParentAndChild

java.lang.IllegalArgumentException: parameter must be a descendant of this view 
    at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:4479) 
    at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:4416) 
    at android.view.ViewRootImpl.scrollToRectOrFocus(ViewRootImpl.java:2656) 
    at android.view.ViewRootImpl.draw(ViewRootImpl.java:2300) 
    at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2249) 
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1882) 
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1009) 
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5508) 
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
    at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
    at android.view.Choreographer.doFrame(Choreographer.java:532) 
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
    at android.os.Handler.handleCallback(Handler.java:730) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:213) 
    at android.app.ActivityThread.main(ActivityThread.java:5225) 
    at java.lang.reflect.Method.invokeNative(Method.java) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
    at dalvik.system.NativeStart.main(NativeStart.java) 

Sau rất nhiều đào và kiểm tra , Tôi đã phát hiện ra rằng sự cố đã được giới thiệu vào ngày 27 tháng 10 sau khi cập nhật Appcompat lib (android-support-v7-appcompat). Phiên bản mới nhất của Appcompat dường như không giải quyết được vấn đề này.

Tôi cho rằng vấn đề không liên quan đến các lỗi tương tự (như this question) vì tôi đã cô lập cam kết giới thiệu sự cố trên repo của tôi và nó là bản chứa bản cập nhật của Appcompat.

Bất kỳ đầu mối nào về điều này? Bất cứ ai có cùng một vấn đề không?

+1

"Tôi cho rằng vấn đề không liên quan đến các lỗi tương tự (như câu hỏi này) vì ..." - Có thể đúng, nhưng bạn sẽ thực hiện nhiều tiến bộ hơn bằng cách đưa ra dự đoán về nơi mã của bạn kích hoạt ngoại lệ và đăng thông tin đó. Theo dõi ngăn xếp chỉ hữu ích cho nhà phát triển Google/AOSP có thể vá thư viện ứng dụng. –

+0

Vấn đề là không có cách nào để tái tạo lỗi một cách có hệ thống. Tôi thực sự không biết điểm vào có thể, đó là cách tôi yêu cầu các đề xuất hoặc trải nghiệm tương tự của các nhà phát triển khác – bonnyz

+1

Có thể có liên quan http://stackoverflow.com/questions/7100555/preventing-catching-illegalargumentexception-parameter-must- be-a-descendant-of –

Trả lời

-1

Bạn đã cố gắng thiết lập Focusability vào View của bạn một cách chính xác ?:

mYourView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); 

hoặc trong XML

android:descendantFocusability="blocksDescendants" 
0

Bạn nên thử cách sau trong XML:

android:descendantFocusability="beforeDescendants" 
0

thường trên ListView có phương pháp n amed offsetRectBetweenParentAndChild() có công việc tái chế lượt xem khi cuộn và phương pháp này thường ném ngoại lệ này.

câu trả lời tốt nhất cho câu hỏi này là

Nối một ScrollListener đến hoạt động của bạn, khi ListView bắt đầu di chuyển, rõ ràng trọng tâm hiện nay.

mà tôi tìm thấy trong câu hỏi this.

vui lòng kiểm tra và cho tôi biết nếu có vấn đề khác.

0

Tôi nghĩ sẽ tốt hơn nếu sử dụng chế độ xem cuộn đơn giản. Nó chắc chắn sẽ sửa chữa vấn đề của bạn.

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