2012-06-19 2 views
32

Я получил эту ошибку, используя ViewPager в Android Support package. от горизонтального обзора Пробег с 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) 

ответ

70

Только в случае, если кто не читает комментарии ответа passsy, вот это сводка полезных ответов:

1) Осмотрите метод getItem(int index) очень внимательно и найдите любую логику, сценарии или отсутствующие операторы «break», которые могут привести к тому, что вы получите фрагмент null.

2) Проверьте, что количество, возвращаемое getCount(), соответствует количеству фрагментов, возвращаемых в getItem(int index).

3) Проверьте параметры импорта и убедитесь, что вы не смешиваясь с android.app.Fragmentandroid.support.v4.app.Fragment

+0

Это должен быть принятый ответ. Стек ошибок выбрасывается на всех трех учетных записях. В моем случае я не реализовал класс Фрагмент, раздувающий представление для определенной вкладки. Я был в предположении, что возврат null из метода getItem() приведет к отображению вкладки (заголовков) без связанных с ними фрагментов в моей деятельности. Возвращение фрагмента для каждой вкладки из getItem() решило проблему для меня. – user1841702

+0

Спасибо @chris .... потому что я не читал комментарии и пытался принять ответ –

+0

случилось со мной, а вариант 1 был билетом - просто обмен - использовал случай переключателя внутри getItem (индекс int), а метки меток были 0, 2, 3, также вызывает такое же исключение. Благодарю. – TommySM

18

Это простое решение. Я смешал android.app.Fragment и android.support.v4.app.Fragment

надеюсь, что это помогает кто-то

+1

Вы уверены, что это исправить? У меня есть тот же самый стек, но нет экземпляров android.app.Fragment ... – brk3

+0

у вас есть android.app.Activity or android.app.FragmentActivity? используйте все от android.support.v4.app – passsy

+47

Я нашел проблему, один из случаев переключения в моем getItem() выпал на дно, где был установлен по умолчанию возврат null. – brk3

6

Если getItem() в ваших возвращениях адаптера нуля, что может вызвать исключения нулевого указателя.