5

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

    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

4 回答 4

10

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

这是我的解决方案:

mViewFlow.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);

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

希望能帮到你。

于 2014-03-25T10:54:01.797 回答
3

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

(requireContext() as Activity).currentFocus?.clearFocus()
于 2020-07-22T18:17:04.250 回答
1

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View currentFocus = ((Activity)mContext).getCurrentFocus();
    if (currentFocus != null) {
        currentFocus.clearFocus();
    }  
}
于 2017-09-04T13:11:22.250 回答
0

这对我有用。

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

这里,parent就是getView中的ViewGroup参数。

于 2015-01-28T07:12:39.697 回答