[英]Recyclerview showing Null Pointer exception
我正在使用具有選項卡布局的視圖分頁器,在第三個選項卡中,我使用的是保存Recyclerview的片段。 現在,當我滑動選項卡時,當我到達第三個選項卡時,它顯示了一個錯誤,
Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView$LayoutManager.stopSmoothScroller()' on a null object reference
我不知道這是什么問題,正在從服務器獲取數據,但應用程序崩潰了。 我在Google中搜索了很多與該問題相關的內容,但未獲得任何有效答案。
這是該片段中recylerview實現的代碼。
recyclerView = (RecyclerView) layout.findViewById(R.id.staggeredGridDesign);
adapter = new AdapterDesigns(getActivity());
manager = new GridLayoutManager(getActivity(), 2, LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(manager);
recyclerView.swapAdapter(adapter, false);
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
if (m == 1 && listMen.size() % 2 != 0) {
if (position == 0)
return 2;
} else if (w == 1 && listWomen.size() % 2 != 0) {
if (position == 0)
return 2;
}
return 1;
}
});
adapter.setDesignList(listMen);
LogCat:
Process: stvisionary.fashionove.com, PID: 31886
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView$LayoutManager.stopSmoothScroller()' on a null object reference
at android.support.v7.widget.RecyclerView.stopScrollersInternal(RecyclerView.java:1229)
at android.support.v7.widget.RecyclerView.stopScroll(RecyclerView.java:1221)
at android.support.v7.widget.RecyclerView.onDetachedFromWindow(RecyclerView.java:1426)
at android.view.View.dispatchDetachedFromWindow(View.java:13459)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2839)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2836)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2836)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2836)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2836)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2836)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:4165)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:4138)
at android.view.ViewGroup.removeView(ViewGroup.java:4070)
at android.support.v4.view.ViewPager.removeView(ViewPager.java:1326)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1055)
at android.support.v4.app.FragmentManagerImpl.removeFragment(FragmentManager.java:1233)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:709)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:488)
at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1073)
at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
at android.support.v4.view.ViewPager$3.run(ViewPager.java:249)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:549)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
08-
我認為問題不在此片段中(根本沒有第三位)。
at android.support.v4.view.ViewPager.removeView(ViewPager.java:1326)
根據您的logcat,以前關閉其中一個片段存在問題。 基本上是在打電話
'void android.support.v7.widget.RecyclerView$LayoutManager.stopSmoothScroller()'
碎片已經分離后,並且此回收器視圖不再存在。 因此,最好看看一下,並確保不會發生這種情況。
無論如何,您可以通過像這樣緩存片段來防止破壞ViewPager中的片段
viewPager.setOffscreenPageLimit(5);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.