2015-06-02 11 views
6

Benutzer erhalten auf einigen Telefonen die folgende Ausnahme in meiner App. Ich habe versucht, den Fehler selbst zu reproduzieren, konnte es aber nicht. Ich habe den Stack-Overflow für ähnliche Probleme durchsucht und ihre Lösungen versucht, aber keine scheint zu funktionieren.Ein weiterer Parameter java.lang.IllegalArgumentException: muss ein Nachkomme dieser Sicht sein.

Hier sind die Antworten, die ich schon versucht:

  1. Preventing/catching "IllegalArgumentException: parameter must be a descendant of this view" error
  2. java.lang.IllegalArgumentException: parameter must be a descendant of this view Error
  3. Einstellung das folgende Attribut: android:windowSoftInputMode="stateHidden|adjustPan"

Ich habe eine EditText aber es ist außerhalb des expandablelistview.

Ich versuche, auf eine Erklärung zu finden, warum dies geschieht und was es kann dazu führen, geschehen. Ich entschuldige mich, aber ich kann keinen Code posten.

java.lang.IllegalArgumentException: Parameter muss ein Nachkomme Diese Ansicht bei android.view.ViewGroup.offsetRectBetweenParentAndChild (ViewGroup.java:4568) bei android.view.ViewGroup.offsetDescendantRectToMyCoords (ViewGroup.java sein : 4505) bei android.view.ViewGroup $ ViewLocationHolder.init (ViewGroup.java:6743) bei android.view.ViewGroup $ ViewLocationHolder.obtain (ViewGroup.java:6680) bei android.view.ViewGroup $ ChildListForAccessibility.init (ViewGroup.java:6638) bei android.view.ViewGroup $ ChildListForAccessibility.obtain (ViewGroup.java:6606) bei android.v iew.ViewGroup.addChildrenForAccessibility (ViewGroup.java:1697) bei android.view.ViewGroup.onInitializeAccessibilityNodeInfoInternal (ViewGroup.java:2525) bei android.view.View.onInitializeAccessibilityNodeInfo (View.java:5213) bei android.widget. AdapterView.onInitializeAccessibilityNodeInfo (AdapterView.java:946) bei android.widget.AbsListView.onInitializeAccessibilityNodeInfo (AbsListView.java:1449) bei android.widget.ListView.onInitializeAccessibilityNodeInfo (ListView.java:3781) bei android.widget.ExpandableListView. onInitializeAccessibilityNodeInfo (ExpandableListView.java:1348) bei android.view.View.CreateAccessibilityNodeInfoInternal (View.java:5174) bei android.view.View.createAccessibilityNodeInfo (View.java:5161) bei android.view.AccessibilityInteractionController $ AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode (AccessibilityInteractionController.java:811) bei android.view.AccessibilityInteractionController $ AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode (AccessibilityInteractionController.java:834) bei android.view.AccessibilityInteractionController $ AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode (AccessibilityInteractionController. java: 834) bei android.view.AccessibilityInteractionController $ AccessibilityNodePrefetcher.prefetchAccessibilityNodeInfos (AccessibilityInteractionController.java:720) bei android.view.AccessibilityInteractionController.findAccessibilityNodeInfoByAccessibilityIdUiThread (AccessibilityInteractionController.java:147) bei android.view.AccessibilityInteractionCont roller.access $ 300 (AccessibilityInteractionController.java:49) bei android.view.AccessibilityInteractionController $ PrivateHandler.handleMessage (AccessibilityInteractionController.java:971) bei android.os.Handler.dispatchMessage (Handler.java:102) bei android.os .Looper.loop (Looper.java:136) bei android.app.ActivityThread.main (ActivityThread.Java: 5097) bei java.lang.reflect.Method.invokeNative (Methode.java) bei java.lang.reflect.Method.invoke (Methode.java: 515) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:785) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:601) bei dalvik.system.NativeStart.main (NativeStart.java)

+0

Können Sie bitte den entsprechenden Code schreiben, wo es –

Antwort

5

Das Problem wurde durch Hinzufügen eines falsch überhöhten Headers zu zwei verschiedenen Listenansichten verursacht.

Ich aufgebläht eine Ansicht mit listViewA als Eltern und fügen Sie es zu listViewB auch. Als solche:

RelativeLayout listViewHeader = (RelativeLayout) inflater.inflate(R.layout.listviewheader, listViewA, false); 

// Set some views 

listViewA.addHeaderView(listViewHeader); 
listViewB.addHeaderView(listViewHeader); 

fixiert ich es durch die oben auf die folgende Veränderung:

RelativeLayout listViewHeaderA = (RelativeLayout) inflater.inflate(R.layout.listviewheader, listViewA, false); 
RelativeLayout listViewHeaderB = (RelativeLayout) inflater.inflate(R.layout.listviewheader, listViewB, false); 

listViewA.addHeaderView(listViewHeaderA); 
listViewB.addHeaderView(listViewHeaderB); 

Wie für den Absturz reproduzieren, das Problem ist passiert, als Google Talk wieder eingeschaltet wird. Hier ist meine Ansicht zur Situation: Google Talk Back führt Text-zu-Sprache-Funktionen in Ansichten durch, die im Fokus stehen (entweder durch Berührung oder durch automatische Fokussierung). Wenn ein Bildschirm mit mehreren Ansichten aufgerufen wird, der den Fokus anfordert, werden die Ansichten gemäß einer Hierarchie/Reihenfolge gelesen.

Wenn Sie ein Layout (übergeordnetes Element) mit drei Ansichten (untergeordnete Elemente) haben, überprüft Google Talk Back, wie die Ansichten angeordnet sind, und liest sie entsprechend ein. In einem Layout mit drei horizontal ausgerichteten Textansichten kann Google Talk Back beispielsweise zuerst die linke Textansicht, dann die mittlere Textansicht und dann die rechte Textansicht anzeigen.

In meinem Fall habe ich eine Header-Ansicht mit listViewA als übergeordnetes Element aufgefüllt und diese Ansicht sowohl zu listViewA als auch listViewB hinzugefügt. Wenn listViewB den Fokus erhält und Google Talk Back versucht, seine untergeordneten Elemente zu interpretieren, wird die Headeransicht nicht als untergeordnetes Element der Liste angezeigt und löst die Ausnahme aus. Dies passiert auch, wenn ich die Header-Ansicht ohne Eltern aufblasen (null).

+0

mir wirklich geholfen .. Vielen Dank abstürzt !! – Bunny

0

Ich bekam auch den gleichen Fehler, wenn Google TalkBack aktiviert ist. In meinem Fall habe ich eine Ansicht mit dem booleschen attachToParent true aufgefrischt.So, indem ich es falsch gemacht habe, funktionierte für mich.

0

Ich habe anhängen auf Scroll-Hörer in Scroll und lösen Problem

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

     @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 

     } 
    }); 
Verwandte Themen