ViewPager FragmentPagerAdapter空指针指针、ViewPager、FragmentPagerAdapter

由网友(比太阳还暖)分享简介:我通过使用ViewPager在Android 支持包得到这个错误。从横向视图刷卡与ViewPager教程 06-19 13:07:25.950:E / AndroidRuntime(16382):致命异常:主要06-19 13:07:25.950:E / AndroidRuntime(16382):显示java.la...

我通过使用ViewPager在Android 支持包得到这个错误。从横向视图刷卡与ViewPager教程

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

解决方案

万一有人不读passsy的回答的意见,这里是有用的答案摘要:

1)检查你的的getItem(INT指数)方法非常接近,并查找任何逻辑,方案或丢失的破发声明这可能会导致你最终有一个片段。

2)检查由 getCount将()返回的计数的getItem(INT指数)。

3)检查您的进口,确保不会混 android.app.Fragment android.support.v4.app.Fragment

I got this error by using the ViewPager in the Android Support package. from the Horizontal View Swiping with ViewPager Tutorial

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)
viewpager与fragmentpageradapter内存溢出

解决方案

Just in case anyone doesn't read the comments of passsy's answer, here is a summary of the useful answers:

1) Examine your getItem(int index) method very closely and look for any logic, scenarios or missing 'break' statements which might cause you to end up with a null fragment.

2) Check that the count returned by getCount() matches the number of fragments returned in getItem(int index).

3) Examine your imports and ensure you aren't mixing android.app.Fragment with android.support.v4.app.Fragment