2015-06-02 17 views
6

Người dùng nhận được ngoại lệ sau trong ứng dụng của tôi trên một số điện thoại nhất định. Tôi đã thử tự tái tạo lỗi nhưng không thể. Tôi đã tìm kiếm thông qua ngăn xếp tràn cho các vấn đề tương tự và đã thử các giải pháp của họ nhưng dường như không có cách nào hoạt động.Tham số java.lang.IllegalArgumentException khác: phải là hậu duệ của chế độ xem này

Dưới đây là câu trả lời tôi đã cố gắng:

  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. Thiết lập thuộc tính sau: android:windowSoftInputMode="stateHidden|adjustPan"

Tôi có một EditText nhưng đó là bên ngoài của expandablelistview.

Tôi đang cố gắng tìm giải thích về lý do tại sao điều này xảy ra và điều gì có thể khiến điều đó xảy ra. Tôi xin lỗi nhưng tôi không thể đăng bất kỳ mã nào.

java.lang.IllegalArgumentException: tham số phải là một hậu duệ của quan điểm này tại android.view.ViewGroup.offsetRectBetweenParentAndChild (ViewGroup.java:4568) tại android.view.ViewGroup.offsetDescendantRectToMyCoords (ViewGroup.java : 4505) tại android.view.ViewGroup $ ViewLocationHolder.init (ViewGroup.java:6743) tại android.view.ViewGroup $ ViewLocationHolder.obtain (ViewGroup.java:6680) tại android.view.ViewGroup $ ChildListForAccessibility.init (ViewGroup.java:6638) tại android.view.ViewGroup $ ChildListForAccessibility.obtain (ViewGroup.java:6606) tại android.v iew.ViewGroup.addChildrenForAccessibility (ViewGroup.java:1697) tại android.view.ViewGroup.onInitializeAccessibilityNodeInfoInternal (ViewGroup.java:2525) tại android.view.View.onInitializeAccessibilityNodeInfo (View.java:5213) tại android.widget. AdapterView.onInitializeAccessibilityNodeInfo (AdapterView.java:946) tại android.widget.AbsListView.onInitializeAccessibilityNodeInfo (AbsListView.java:1449) tại android.widget.ListView.onInitializeAccessibilityNodeInfo (ListView.java:3781) tại android.widget.ExpandableListView. onInitializeAccessibilityNodeInfo (ExpandableListView.java:1348) tại android.view.View.createAccessibilityNodeInfoInternal (View.java WEBC174) tại android.view.View.createAccessibilityNodeInfo (View.javaareness161) tại android.view.AccessibilityInteractionController $ AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode (AccessibilityInteractionController.java:811) tại android.view.AccessibilityInteractionController $ AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode (AccessibilityInteractionController.java:834) tại android.view.AccessibilityInteractionController $ AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode (AccessibilityInteractionController. java: 834) tại android.view.AccessibilityInteractionController $ AccessibilityNodePrefetcher.prefetchAccessibilityNodeInfos (AccessibilityInteractionController.java:720) tại android.view.AccessibilityInteractionController.findAccessibilityNodeInfoByAccessibilityIdUiThread (AccessibilityInteractionController.java:147) tại android.view.AccessibilityInteractionCont roller.access $ 300 (AccessibilityInteractionController.java:49) tại android.view.AccessibilityInteractionController $ PrivateHandler.handleMessage (AccessibilityInteractionController.java:971) tại android.os.Handler.dispatchMessage (Handler.java:102) tại android.os .Looper.loop (Looper.java:136) tại android.app.ActivityThread.main (ActivityThread.java: 5097) tại java.lang.reflect.Method.invokeNative (Method.java) tại java.lang.reflect.Method.invoke (Method.javaedge15) tại com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:785) tại com.android.internal.os.ZygoteInit.main (ZygoteInit.java:601) tại dalvik.system.NativeStart.main (NativeStart.java)

+0

Bạn có thể xin vui lòng gửi mã có liên quan mà nó đâm –

Trả lời

5

Vấn đề đã được gây ra bằng cách thêm tiêu đề được tăng cấp sai cho hai danh sách xem khác nhau.

Tôi đã tăng lượt xem bằng cách sử dụng listViewA làm cha mẹ và thêm nó vào listViewB. Như vậy:

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

// Set some views 

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

tôi cố định nó bằng cách thay đổi trên như sau:

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

Đối với tái tạo vụ tai nạn, vấn đề đã xảy ra khi Google Talk lại được bật. Dưới đây là ý kiến ​​của tôi về tình huống: Google Talk Back thực hiện văn bản thành lời nói trên các chế độ xem đang được lấy nét (bằng cách chạm hoặc tự động lấy nét). Khi nó nhập vào một màn hình với nhiều khung nhìn yêu cầu lấy nét, nó sẽ đọc các khung nhìn theo thứ bậc/thứ tự.

Nếu bạn có bố cục (bố mẹ) với ba chế độ xem (trẻ em), Google Talk Back sẽ kiểm tra cách sắp xếp lượt xem và sau đó đọc chúng cho phù hợp. Ví dụ: trong bố cục có ba chế độ xem văn bản được xếp hàng theo chiều ngang, Google Talk Back có thể đọc văn bản bên trái trước, sau đó là phần giữa, sau đó ở bên phải.

Trong trường hợp của tôi, tôi đã tăng lượt xem tiêu đề với listViewA làm cha mẹ và thêm chế độ xem đó vào cả hai listViewAlistViewB. Khi listViewB tăng tiêu điểm và Google Talk Back cố gắng giải thích trẻ em của nó, nó thấy chế độ xem tiêu đề không phải là con của danh sách và ném ngoại lệ. Điều này cũng xảy ra nếu tôi tăng lượt xem tiêu đề mà không có cha mẹ (null).

+0

thực sự giúp tôi .. Cảm ơn rất nhiều !! – Bunny

0

Tôi cũng gặp lỗi tương tự khi bật Google TalkBack. Trong trường hợp của tôi, tôi đã thổi phồng một khung nhìn với boolean attachToParent true.So bằng cách làm cho nó sai làm việc cho tôi.

0

tôi đã thêm vào cuộn người nghe trong scrollview và giải quyết vấn đề

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) { 

     } 
    }); 
Các vấn đề liên quan