FragmentManager中的NullPointerException

mlc*_*mlc 28 java android android-fragments android-support-library

我正在使用Android兼容性库,偶尔会变得很奇怪NullPointerException:

java.lang.NullPointerException
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:960)
    at android.support.v4.app.FragmentManagerImpl.performPendingDeferredStart(FragmentManager.java:768)
    at android.support.v4.app.FragmentManagerImpl.startPendingDeferredFragments(FragmentManager.java:1104)
    at android.support.v4.app.LoaderManagerImpl$LoaderInfo.onLoadComplete(LoaderManager.java:410)
    at android.support.v4.content.Loader.deliverResult(Loader.java:103)
    at android.support.v4.content.CursorLoader.deliverResult(CursorLoader.java:81)
    at android.support.v4.content.CursorLoader.onStartLoading(CursorLoader.java:126)
    at android.support.v4.content.Loader.startLoading(Loader.java:197)
    at android.support.v4.app.LoaderManagerImpl$LoaderInfo.start(LoaderManager.java:262)
    at android.support.v4.app.LoaderManagerImpl.doStart(LoaderManager.java:710)
    at android.support.v4.app.Fragment.onStart(Fragment.java:981)
    at android.support.v4.app.Fragment.performStart(Fragment.java:1332)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:906)
    at android.support.v4.app.FragmentManagerImpl.attachFragment(FragmentManager.java:1240)
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:612)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)
    at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:431)
    at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:139)
    at android.support.v4.view.ViewPager.populate(ViewPager.java:804)
    at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:433)
    at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:405)
    at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:386)
    ...
Run Code Online (Sandbox Code Playgroud)

显然,我做错了什么让它FragmentManager进入这样一个可能会崩溃的状态,但我不知道是什么.在相关的代码FragmentManagerImpl没有提供我任何线索.我猜mActivitynull在某种程度上在代码中的那一点?但这似乎是不可能的,因为活动已经在屏幕上,我没有添加任何片段 - 只是在它们之间切换ViewPager.

Oce*_*ife 32

好吧,在我撞到砖墙一段时间之后,我发现这与我片段的宣言直接相关setRetainInstance(true).删除后,问题就消失了.这似乎是一个兼容性库错误...

我将在适当的Google项目下提出一些建议.祝你好运,如果你正在慢慢地对自己啜泣!我希望这能让你解决这个问题.

  • 真的看起来像兼容性lib bug.你有没有把它举起来?如果是,请链接到它,以便我们对其进行投票. (2认同)

Jav*_*ave 5

我几天前得到了这个错误,并且非常混乱,但我发现这是因为一个FragmentTransaction似乎没有得到任何待处理的交易所以当调用executePendingTransactions();A时NPE很像这个被抛出.
我通过确保每个事务实际上都改变了一些东西来解决它(即添加片段1 - >删除片段1 - >提交/执行不起作用).
还要确保寻呼机中没有任何片段成为null.