3

J'ai un fragment avec Recyclerview attaché avec LinearSnapHelper afin d'obtenir la vue au centre et de la mettre en évidence en redimensionnant sa taille.RecyclerView # onMeasure() n'a pas défini la dimension mesurée en appelant setMeasuredDimension()

il fonctionne bien, mais quand pop ce fragment de backstack sur la presse arrière, il jette l'exception suivante.

E/UncaughtException: java.lang.IllegalStateException: View with id 2131689939: android.support.v7.widget.RecyclerView#onMeasure() did not set the measured dimension by calling setMeasuredDimension() 
                    at android.view.View.measure(View.java:19746) 
                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) 
                    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) 
                    at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1117) 
                    at android.widget.LinearLayout.onMeasure(LinearLayout.java:642) 
                    at android.view.View.measure(View.java:19734) 
                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) 
                    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) 
                    at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) 
                    at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) 
                    at android.view.View.measure(View.java:19734) 
                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) 
                    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) 
                    at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) 
                    at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) 
                    at android.view.View.measure(View.java:19734) 
                    at android.support.v4.widget.NestedScrollView.measureChildWithMargins(NestedScrollView.java:1420) 
                    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) 
                    at android.support.v4.widget.NestedScrollView.onMeasure(NestedScrollView.java:482) 
                    at android.view.View.measure(View.java:19734) 
                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) 
                    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) 
                    at android.view.View.measure(View.java:19734) 
                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) 
                    at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:714) 
                    at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:90) 
                    at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1391) 
                    at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:784) 
                    at android.view.View.measure(View.java:19734) 
                    at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1081) 
                    at android.view.View.measure(View.java:19734) 
                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) 
                    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) 
                    at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139) 
                    at android.view.View.measure(View.java:19734) 
                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) 
                    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) 
                    at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) 
                    at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) 
                    at android.view.View.measure(View.java:19734) 
                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) 
                    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) 
                    at android.view.View.measure(View.java:19734) 
                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) 
                    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) 
                    at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) 
                    at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) 
                    at android.view.View.measure(View.java:19734) 
                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) 
                    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) 
                    at com.android.internal.policy.DecorView.onMeasure(DecorView.java:687) 
                    at android.view.View.measure(View.java:19734) 
                    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2271) 
                    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1358) 
                    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1607) 

Le code relavant pour recyclerview est aussi

https://gist.githubusercontent.com/anonymous/81a2ae091ded158839b6353ddb03163f/raw/1aff18064d4de4e42b79aa50ff8d44bd6df365a9/Main.java

+0

Avez-vous trouvé quelque chose? –

Répondre

2

Je chose que ce soit parce que nous appelons RecyclerView.setLayoutManager() avec un LayoutManager qui ont déjà un RecyclerView.

public void setLayoutManager(LayoutManager layout) { 
    ... 
    if (layout != null) { 
     if (layout.mRecyclerView != null) { 
      throw new IllegalArgumentException("LayoutManager " + layout 
        + " is already attached to a RecyclerView:" 
        + layout.mRecyclerView.exceptionLabel()); 
     } 
     mLayout.setRecyclerView(this); 
     if (mIsAttached) { 
      mLayout.dispatchAttachedToWindow(this); 
     } 
    } 
    ... 
} 

Mais pour une raison que je ne comprends pas, l'exception imprimée en Logcat est

UncaughtException: java.lang.IllegalStateException: View with id 2131231433: android.support.v7.widget.RecyclerView#onMeasure() did not set the measured dimension by calling setMeasuredDimension()` 

Peut-être attraper quelque chose cette exception et jet celui-ci à la place (sans la cause)?

+0

oui. le gestionnaire de mise en page devait être réinitialisé. Merci !! –