2015-06-02 30 views
6

Kullanıcılar, uygulamanızda belirli telefonlarda aşağıdaki kural dışı durumu alıyor. Hatayı yeniden üretmeye çalıştım ama yapamadım. Benzer sorunlar için yığının taşmasını araştırdım ve çözümlerini denedim ama hiçbiri çalışmıyor gibi görünüyor.Başka bir java.lang.IllegalArgumentException: parametresinin bu görünümün bir soyundan olması gerekir

İşte zaten denedim cevaplar: Preventing/catching "IllegalArgumentException: parameter must be a descendant of this view" error

  • java.lang.IllegalArgumentException: parameter must be a descendant of this view Error
    1. aşağıdaki öznitelik Ayar: android:windowSoftInputMode="stateHidden|adjustPan"

    Bir EditText var ama expandablelistview dışında.

    Bunun neden olduğu ve bunun olmasına neden olabileceğine dair bir açıklama bulmaya çalışıyorum. Özür diliyorum ama herhangi bir kod gönderemiyorum.

    java.lang.IllegalArgumentException: Parametre (ViewGroup.java android.view.ViewGroup.offsetDescendantRectToMyCoords de android.view.ViewGroup.offsetRectBetweenParentAndChild (ViewGroup.java:4568) bu görünüm soyundan olmalıdır : 4505) android.view.ViewGroup $ ChildListForAccessibility.init de android.view.ViewGroup $ ViewLocationHolder.init (ViewGroup.java:6743) android.view.ViewGroup $ ViewLocationHolder.obtain (ViewGroup.java:6680) de de (ViewGroup.java:6638) at android.view.ViewGroup $ ChildListForAccessibility.obtain (ViewGroup.java:6606) android.v adresinde daha fazla bilgi alabilirsiniz. iew.ViewGroup.addChildrenForAccessibility (ViewGroup.java:1697) android.view.ViewGroup.onInitializeAccessibilityNodeInfoInternal (ViewGroup.java:2525) en android.view.View.onInitializeAccessibilityNodeInfo (View.java:5213) en android.widget de . AdapterView.onInitializeAccessibilityNodeInfo (AdapterView.java:946) android.widget.AbsListView.onInitializeAccessibilityNodeInfo (AbsListView.java:1449) en android.widget.ListView.onInitializeAccessibilityNodeInfo (ListView.java:3781) en android.widget.ExpandableListView de . onInitializeAccessibilityNodeInfo (ExpandableListView.java:1348) android.view.View.createAccessibilityNodeInfoInternal (View.java:5174) at android.view.View.createAccessibilityNodeInfo (View.java:5161)android.view.AccessibilityInteractionController $ AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode de android.view.AccessibilityInteractionController $ AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode (AccessibilityInteractionController.java:834) de android.view.AccessibilityInteractionController $ AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode (AccessibilityInteractionController.java:811) (AccessibilityInteractionController de. java: android.view.AccessibilityInteractionController $ AccessibilityNodePrefetcher.prefetchAccessibilityNodeInfos (AccessibilityInteractionController.java:720) android.view.AccessibilityInteractionController.findAccessibilityNodeInfoByAccessibilityIdUiThread (AccessibilityInteractionController.java:147 de de 834) ) android.view.AccessibilityInteractionCont de roller.access 300 $ android.os de android.os.Handler.dispatchMessage (Handler.java:102) de android.view.AccessibilityInteractionController $ PrivateHandler.handleMessage (AccessibilityInteractionController.java:971) de (AccessibilityInteractionController.java:49) .Looper.loop (Looper.java:136) android.app.ActivityThread.main'de (ActivityThread.java: 5097) java.lang.reflect.Method.invokeNative (Method.java) at java.lang.reflect.Method.invoke (Yöntem.java:515) com.android.internal.os.ZygoteInit $ adresinden dalvik.system.NativeStart.main de com.android.internal.os.ZygoteInit.main (ZygoteInit.java:601) de MethodAndArgsCaller.run (ZygoteInit.java:785) (NativeStart.java)

  • +0

    bunu –

    cevap

    5

    Sorun, iki farklı liste görünümüne yanlış şişirilmiş bir başlık eklenmesi nedeniyle ortaya çıkmıştır.

    Ebeveyn olarak listViewA kullanarak bir görünümü şişirdim ve listViewB'a ekliyorum. Bu itibarla:

    RelativeLayout listViewHeader = (RelativeLayout) inflater.inflate(R.layout.listviewheader, listViewA, false); 
    
    // Set some views 
    
    listViewA.addHeaderView(listViewHeader); 
    listViewB.addHeaderView(listViewHeader); 
    

    aşağıdaki yukarıdaki değiştirerek sabit: Google Talk Geri açıldığında

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

    kazasında çoğaltılması gelince, sorun olmadı. İşte durumumu ele alalım: Google Talk Back, odakta olan (dokunmatik veya otomatik odaklı) görünümlerdeki konuşmayı metne yapar. Odağı isteyen çoklu görünümleri olan bir ekrana girdiğinde, görünümleri bir hiyerarşiye/düzene göre okur.

    Üç görünümlü (alt) bir düzeniniz (ana) varsa, Google Talk Back, görünümlerin nasıl düzenlendiğini denetler ve ardından bunları okur. Örneğin, yatay olarak dizilmiş üç textview içeren bir düzende, Google Talk Back, önce sol metin görünümünü, ardından ortadakii ve ardından sağdaki metni okuyabilir.

    Durumumda, üst öğe olarak listViewA ile üstbilgi görünümünü şişiriyor ve bu görünümü hem listViewA hem de listViewB'a ekliyordum. listViewB odağı kazandığında ve Google Talk Back çocuklarını yorumlamaya çalıştığında, başlık görünümünü listenin bir alt öğesi değildir ve istisnayı atar. Bu, üstbilgi görünümünü hiçbir ebeveyn (null) olmadan şişirirsem de olur.

    +0

    Yaralandı ilgili kodun gönderin Can sorun çözmek Çok teşekkürler !! – Bunny

    0

    Google TalkBack açıkken de aynı hatayı alıyorum. Benim durumumda, yanlış bir şekilde benim için çalışmasını sağlayarak boolean attachToParent ile bir görüş şişiriyordum.

    0

    Scrollview yılında kaydırma dinleyici üzerinde ekleme ve .. gerçekten bana yardımcı

    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) { 
    
         } 
        }); 
    
    İlgili konular