IllegalArgumentException参数必须是ViewGroup.offsetRectBetweenParentAndChild中此视图的后代

时间:2014-11-05 07:56:38

标签: android android-viewgroup

我在崩溃日志中遇到了一个应用用户异常。无法从日志跟踪中了解。如果有人有想法,请分享。

致命异常:java.lang。 IllegalArgumentException 参数必须是此视图的后代  原料

  

android.view.ViewGroup.offsetRectBetweenParentAndChild   (ViewGroup.java:4563)   android.view.ViewGroup.offsetDescendantRectToMyCoords   (ViewGroup.java:4500)android.view.ViewGroup $ ViewLocationHolder.init   (ViewGroup.java:6738)android.view.ViewGroup $ ViewLocationHolder.obtain   (ViewGroup.java:6675)   android.view.ViewGroup $ ChildListForAccessibility.init   (ViewGroup.java:6633)   android.view.ViewGroup $ ChildListForAccessibility.obtain   (ViewGroup.java:6601)   android.view.ViewGroup.addChildrenForAccessibility   (ViewGroup.java:1703)   android.view.ViewGroup.onInitializeAccessibilityNodeInfoInternal   (ViewGroup.java:2530)   android.view.View.onInitializeAccessibilityNodeInfo(View.java:5209)   android.widget.AdapterView.onInitializeAccessibilityNodeInfo   (AdapterView.java:937)   android.widget.AbsListView.onInitializeAccessibilityNodeInfo   (AbsListView.java:1492)   android.widget.ListView.onInitializeAccessibilityNodeInfo   (ListView.java:3781)   android.view.View.createAccessibilityNodeInfoInternal(View.java:5170)   android.view.View.createAccessibilityNodeInfo(View.java:5157)

4 个答案:

答案 0 :(得分:6)

我通过添加这样的自定义侦听器修复了此错误:

protected class MyScrollListener implements OnScrollListener {

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {
            // do nothing 
        }

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            if (SCROLL_STATE_TOUCH_SCROLL == scrollState) {
                View currentFocus = getCurrentFocus();
                if (currentFocus != null) {
                    currentFocus.clearFocus();
                }
            }
        }

    }

然后使用您创建的监听器:

listview.setOnScrollListener(MyScrollListener);

有关详细信息,请参阅此(代码也来自此链接):Preventing/catching "IllegalArgumentException: parameter must be a descendant of this view" error

答案 1 :(得分:2)

我尝试调用EditText小部件的clearFocus()成员,但这对我不起作用。然而,工作的是调用父母的clearChildFocus(View)函数。 这是代码:

ViewParent parent = mEditText.getParent();
parent.clearChildFocus(mEditText);

答案 2 :(得分:0)

这适合我。

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

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

答案 3 :(得分:0)

当我尝试在recyclerview中使用edittext时,出现了相同的错误。我认为这同样适用于具有listview用法的editext。

问题发生在Viewgroup处理视图时焦点不匹配时。对我来说,解决问题的方法是将android:windowSoftInputMode =“ adjustPan”添加到有关活动的清单中。

<activity android:name=".register.RegistrationActivity"
        android:windowSoftInputMode="adjustPan"/>

希望这对某人有用。