2012-06-19 16 views
32

Ho ricevuto questo errore utilizzando il ViewPager in Android Support package. dalla vista orizzontale Swiping con ViewPager TutorialViewPager FragmentPagerAdapter Nullpointer

06-19 13:07:25.950: E/AndroidRuntime(16382): FATAL EXCEPTION: main 
06-19 13:07:25.950: E/AndroidRuntime(16382): java.lang.NullPointerException 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:347) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.app.BackStackRecord.add(BackStackRecord.java:342) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:649) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.view.ViewPager.populate(ViewPager.java:783) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1016) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.View.measure(View.java:12728) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:594) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:376) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.View.measure(View.java:12728) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.View.measure(View.java:12728) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.LinearLayout.measureVertical(LinearLayout.java:660) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.View.measure(View.java:12728) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2092) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.View.measure(View.java:12728) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.os.Looper.loop(Looper.java:137) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.app.ActivityThread.main(ActivityThread.java:4424) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at java.lang.reflect.Method.invokeNative(Native Method) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at java.lang.reflect.Method.invoke(Method.java:511) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at dalvik.system.NativeStart.main(Native Method) 

risposta

70

Solo nel caso in cui qualcuno non legge i commenti di risposta di passsy, ecco un riepilogo delle risposte utili:

1) Esaminare il metodo getItem(int index) molto attentamente e cercare qualsiasi logica, scenario o mancata istruzione 'pausa' che potrebbe causare la fine di un frammento null.

2) Verificare che il conteggio restituito da getCount() corrisponda al numero di frammenti restituiti in getItem(int index).

3) Esaminate le vostre importazioni e garantire che non stia mescolando android.app.Fragment con android.support.v4.app.Fragment

+0

Questa dovrebbe essere la risposta accettata. Lo stack degli errori viene generato su tutti e tre gli account. Nel mio caso non avevo implementato una classe Fragment che gonfiava la vista per una determinata scheda. Ero sotto il presupposto che restituire un valore null dal metodo getItem() avrebbe reso la scheda (titoli) senza i Frammenti associati nella mia attività. Restituire un frammento per ogni scheda da getItem() ha risolto il problema per me. – user1841702

+0

Grazie @chris .... perché non ho letto i commenti e ho provato la risposta accettata –

+0

mi è successo e l'opzione 1 era il biglietto - solo condivisione - usato un caso di scambio all'interno di getItem (int index), e le etichette del caso erano 0, 2, 3, causa anche la stessa eccezione. Grazie. – TommySM

18

Si tratta di una soluzione semplice. Ho mescolato android.app.Fragment e android.support.v4.app.Fragment

speranza che questo aiuta qualcuno

+1

Sei sicuro che fosse la soluzione? Ho lo stesso stacktrace ma nessuna istanza di android.app.Fragment ... – brk3

+0

hai Android.app.Activity o android.app.FragmentActivity? utilizzare tutto da android.support.v4.app – passsy

+47

Ho trovato il problema, uno dei casi di switch nel mio getItem() stava cadendo in fondo dove c'era un ritorno di default null. – brk3

6

Se getItem() in vostre dichiarazioni adattatore Null che può causare un'eccezione di puntatore nullo.

Problemi correlati