2014-12-18 4 views
26

Ich erlebe dieses Problem zufällig im letzten Monat:AppCompat „java.lang.IllegalArgumentException: Parameter muss ein Nachkomme dieser Ansicht sein“ in 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) 

Nach vielen Graben und Tests Ich fand heraus, dass das Problem wurde am 27. Oktober nach der Aktualisierung der Appcompat lib (android-support-v7-appcompat) eingeführt. Die neueste Version von Appcompat scheint dieses Problem nicht zu lösen.

Ich nehme an, dass das Problem nicht mit ähnlichen Fehlern (wie this question) zusammenhängt, weil ich das Commit isoliert habe, das das Problem auf meinem Repo einführte, und es ist derjenige, der das Update von Appcompat enthält.

Irgendwelche Hinweise darauf? Jeder mit dem gleichen Problem da draußen?

+1

"Ich vermute, dass das Problem nicht mit ähnlichen Fehlern (wie dieser Frage) zusammenhängt, weil ..." - Könnte stimmen, aber Sie werden mehr Fortschritte machen, indem Sie eine begründete Vermutung darüber machen, wo Ihr eigener Code die Ausnahme auslöst und diese Informationen veröffentlichen. Der Stack-Trace ist nur für einen Google/AOSP-Entwickler nützlich, der die appcompat-Bibliothek patchen könnte. –

+0

Das Problem ist, dass es keine Möglichkeit gibt, den Fehler systematisch zu reproduzieren. Ich kenne den möglichen Einstiegspunkt wirklich nicht, das ist die Art, wie ich nach Vorschlägen oder ähnlichen Erfahrungen von anderen Entwicklern frage – bonnyz

+1

Wahrscheinlich verwandt http://stackoverflow.com/questions/7100555/preventing-catching-illegalargumentexception-parameter-must- be-a-democendant-of –

Antwort

-1

Haben Sie

android:descendantFocusability="blocksDescendants" 
0

Sie sollten versuchen, die folgenden in XML korrekt Fokussierbarkeit auf Ihrer Ansicht ?:

mYourView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); 

oder in XML versucht Einstellung:

android:descendantFocusability="beforeDescendants" 
0

in der Regel auf ListView gibt es Methode n Amed offsetRectBetweenParentAndChild(), die die Aufgabe hat, Ansichten auf Bildlauf zu recyceln, und diese Methode löst normalerweise diese Ausnahme aus.

die beste Antwort auf diese Frage ist

eine ScrollListener auf Ihre Aktivität anhängen, wenn Listview beginnen Scrollen, klare aktuelle Fokus.

die ich in this Frage gefunden habe.

Bitte überprüfen Sie es und lassen Sie mich wissen, wenn es andere Probleme gibt.

0

Ich denke, es wäre besser, eine einfache Bildlaufansicht zu verwenden. Es würde definitiv dein Problem beheben.

Verwandte Themen