先貼異常信息:
java.lang.IllegalArgumentException: parameter must be a descendant of this view
at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:4579)
at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:4516)
at android.view.ViewRootImpl.scrollToRectOrFocus(ViewRootImpl.java:3217)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2719)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2666)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2278)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1066)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6245)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5117)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
看一場沒發現關於業務程序造成的遺產堆棧信息 ,開始有點頭大。茫茫大沙漠就只能搜尋點點滴滴的。
后發現於“http://stackoverflow.com/questions/7100555/preventing-catching-illegalargumentexception-parameter-must-be-a-descendant-of ”有點路子 嘗試一下可以。
噴然欣慰。
至於解決的代碼
View currentFocus =((Activity)mContext).getCurrentFocus(); if(currentFocus !=null){ currentFocus.clearFocus(); }
代碼從字面理解上講當前的獲得的焦點的view 清理。
在說明下使用的背景:魅族手機上(其他手機沒出現這樣情況),在可展開BaseExpandableListAdapter適配子項中存在edittext編輯框,並且數據是超出一屏 。當即點擊最后一項中的edittext彈出了軟鍵盤 然后收縮父項后就出現異常。