2014-11-05 7 views
9

Ich habe folgende Ausnahme von einem meiner App-Benutzer in Absturzprotokollen erhalten. Kann aus der Protokollablaufverfolgung nicht nachvollzogen werden. Wenn jemand einige Gedanken hat, bitte teilen.IllegalArgumentException-Parameter muss ein Nachkomme dieser Ansicht sein bei ViewGroup.offsetRectBetweenParentAndChild

Schwerwiegende Ausnahme: java.lang. Illegal Parameter muss ein Nachkomme dieser Ansicht roh

android.view.ViewGroup.offsetRectBetweenParentAndChild (ViewGroup.java:4563) android.view.ViewGroup.offsetDescendantRectToMyCoords (ViewGroup.java:4500 sein) 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.createAcce ssibilityNodeInfoInternal (View.java:5170) android.view.View.createAccessibilityNodeInfo (View.java:5157)

+0

Bitte geben Sie den Code –

Antwort

6

ich diesen Fehler behoben durch einen benutzerdefinierten Hörer wie folgt ergänzt:

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(); 
       } 
      } 
     } 

    } 

Dann nutzen der Hörer Sie erstellt:

listview.setOnScrollListener(MyScrollListener); 

weitere Informationen finden Sie in diesem (Code auch von diesem Link genommen): Preventing/catching "IllegalArgumentException: parameter must be a descendant of this view" error

+1

Das Problem ist, dass ich mehrere 'ListView's in meiner Anwendung habe und die erhaltenen Absturzprotokolle hat keine Informationen über die, die Absturz verursacht. – Ammar

+0

@Ammar ja, ich weiß, wie du dich fühlst. Ich habe es auf alle meine Listenansichten gesetzt. Leider kenne ich keine einfachere Lösung. –

2

Ich habe versucht, das clearFocus() -Mitglied des EditText-Widgets aufzurufen, aber das hat bei mir nicht funktioniert. Was jedoch funktionierte, war das Aufrufen der clearChildFocus (View) -Funktion der Eltern. Hier ist es in den Code ein:

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

arbeitete für mich, aber besorgt, weil ich keine Ahnung habe, warum es funktioniert. kann jemand erklären? – sudocoder

0

Dies funktioniert für mich. Hier

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

ist parent der Viewgroup-Parameter in der getView.