2015-08-14 62 views
1

我正在使用帶有選項卡布局的視圖尋呼機,並且在第三個選項卡中我使用了一個包含Recyclerview的片段。 現在,當我刷卡的標籤,當我到達第三個選項卡的顯示錯誤,Recyclerview顯示空指針異常

Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView$LayoutManager.stopSmoothScroller()' on a null object reference 

我不知道是什麼問題,DATAS都可以從服務器獲取,但應用程序崩潰。我在谷歌搜索了很多相關的問題,但沒有得到任何有效的答案。

這是該片段中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-

+0

發表您的代碼 –

+0

@KingofMasses做 – rahul

+0

發表您的logcat –

回答

0

我覺得問題不是出在這個片段(不與第三方的話)。

at android.support.v4.view.ViewPager.removeView(ViewPager.java:1326) 

根據你的logcat有關閉之前的片段的問題。基本上somenting試圖調用

'void android.support.v7.widget.RecyclerView$LayoutManager.stopSmoothScroller()'

片段已經被取出來之後,這個回收視圖不再存在。所以最好看一看,確保這樣的事情不會發生。

無論如何,你可以防止ViewPager破壞片段通過緩存他們像

viewPager.setOffscreenPageLimit(5);

+1

我有解決了這個問題,這是Recyclerview中的一個bug - 21, 我剛剛將編譯Dependency從21更改爲22,現在它的工作正常。 compile'c​​om.android.support:recyclerview-v7:22.2.1' – rahul

+0

@rahul,是的你的解決方案爲我工作。你節省了我的時間。謝謝。 –