java.lang.IllegalArgumentException:参数必须是此视图的后代Error

时间:2012-05-23 14:19:59

标签: android viewgroup

我对ViewGroup有一个奇怪的错误。 对于我的主视图,我使用此链接中的类ViewFlow project

    java.lang.IllegalArgumentException: parameter must be a descendant of this view
        at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:4153)
        at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:4090)
at android.view.ViewRootImpl.scrollToRectOrFocus(ViewRootImpl.java:2129)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:1849)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1641)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2449)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

当我尝试使用Intent或finish()返回此视图时会发生此错误;另一个视图中的方法。当我使用后退按钮时,这不是问题。

所以我不知道为什么我有这个错误。 谢谢你的帮助。

4 个答案:

答案 0 :(得分:3)

有同样的问题。我使用ViewFlow作为父视图和几个GridView作为子视图。当我按下Home键并在我左右滚动这些子视图后再次重新启动活动时,会发生此错误。

这是我的解决方案:

mViewFlow.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);

当然,您可以在layout.xml中配置它。

希望能帮到你。

答案 1 :(得分:1)

从包含EditText的回收站视图中删除项目时,我遇到了同样的问题。在通知适配器我删除了该项目之前

(requireContext() as Activity).currentFocus?.clearFocus()

答案 2 :(得分:0)

这适合我。

convertView = mInflater.inflate(R.layout.row_stat_header,
                    parent, false);  

此处,parent是getView中的ViewGroup参数。

答案 3 :(得分:0)

解决了添加滚动侦听器的问题。

{{1}}