Description
您好,我在 ConsecutiveViewPager2 Fragment 中放 StaggeredGridLayoutManager RecyclerView,切換 ConsecutiveViewPager2 時,會出現以下錯誤訊息:
java.lang.NullPointerException: Attempt to read from field 'java.util.ArrayList androidx.recyclerview.widget.StaggeredGridLayoutManager$Span.mViews' on a null object reference in method 'void androidx.recyclerview.widget.StaggeredGridLayoutManager.recycleFromEnd(androidx.recyclerview.widget.RecyclerView$Recycler, int)'
at androidx.recyclerview.widget.StaggeredGridLayoutManager.recycleFromEnd(StaggeredGridLayoutManager.java:1928)
at androidx.recyclerview.widget.StaggeredGridLayoutManager.recycle(StaggeredGridLayoutManager.java:1762)
at androidx.recyclerview.widget.StaggeredGridLayoutManager.fill(StaggeredGridLayoutManager.java:1681)
at androidx.recyclerview.widget.StaggeredGridLayoutManager.scrollBy(StaggeredGridLayoutManager.java:2154)
at androidx.recyclerview.widget.StaggeredGridLayoutManager.scrollVerticallyBy(StaggeredGridLayoutManager.java:2013)
at androidx.recyclerview.widget.RecyclerView.scrollStep(RecyclerView.java:1972)
at androidx.recyclerview.widget.RecyclerView.scrollByInternal(RecyclerView.java:2071)
at androidx.recyclerview.widget.RecyclerView.scrollBy(RecyclerView.java:1880)
at com.donkingliang.consecutivescroller.ConsecutiveScrollerLayout.scrollChild(ConsecutiveScrollerLayout.java:1301)
at com.donkingliang.consecutivescroller.ConsecutiveScrollerLayout.scrollDown(ConsecutiveScrollerLayout.java:1219)
at com.donkingliang.consecutivescroller.ConsecutiveScrollerLayout.dispatchScroll(ConsecutiveScrollerLayout.java:1101)
at com.donkingliang.consecutivescroller.ConsecutiveScrollerLayout.scrollTo(ConsecutiveScrollerLayout.java:1250)
at com.donkingliang.consecutivescroller.ConsecutiveScrollerLayout.scrollBy(ConsecutiveScrollerLayout.java:1244)
at com.donkingliang.consecutivescroller.ConsecutiveScrollerLayout.scrollChild(ConsecutiveScrollerLayout.java:1301)
at com.donkingliang.consecutivescroller.ConsecutiveScrollerLayout.scrollChildContentToTop(ConsecutiveScrollerLayout.java:1455)
at com.donkingliang.consecutivescroller.ConsecutiveViewPager2.scrollChildContent(ConsecutiveViewPager2.java:176)
at com.donkingliang.consecutivescroller.ConsecutiveViewPager2.access$000(ConsecutiveViewPager2.java:29)
at com.donkingliang.consecutivescroller.ConsecutiveViewPager2$AttachListener.onViewAttachedToWindow(ConsecutiveViewPager2.java:283)
at android.view.View.dispatchAttachedToWindow(View.java:23238)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3698)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3705)
at android.view.ViewGroup.addViewInner(ViewGroup.java:5552)
at android.view.ViewGroup.addView(ViewGroup.java:5328)
at android.view.ViewGroup.addView(ViewGroup.java:5268)
at androidx.recyclerview.widget.RecyclerView$5.addView(RecyclerView.java:889)
at androidx.recyclerview.widget.ChildHelper.addView(ChildHelper.java:107)
at androidx.recyclerview.widget.RecyclerView$LayoutManager.addViewInt(RecyclerView.java:8902)
at androidx.recyclerview.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:8860)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1647)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1591)
at androidx.recyclerview.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1395)
at androidx.recyclerview.widget.LinearLayoutManager.scrollHorizontallyBy(LinearLayoutManager.java:1124)
at androidx.recyclerview.widget.RecyclerView.scrollStep(RecyclerView.java:1969)
at androidx.recyclerview.widget.RecyclerView$SmoothScroller.onAnimation(RecyclerView.java:12316)
at androidx.recyclerview.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:5564)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1689)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1698)
at android.view.Choreographer.doCallbacks(Choreographer.java:1153)
at android.view.Choreographer.doFrame(Choreographer.java:1069)
14:34:34.591 E at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1646) (Ask Gemini)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
當我先到A tab Fragment recyclerView 是有多筆內容的,並往下捲動,之後切換到 B tab Fragment recyclerView 沒有資料,向上捲動最外層的 ConsecutiveScrollerLayout,最後切換回 A tab Fragment recyclerView,會出現這個問題
覺得是回收與重繪 StaggeredGridLayoutManager ,佈局出現問題
請問大大有沒有類似的經驗,謝謝