首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NullPointerException in FragmentManager

NullPointerException in FragmentManager
EN

Stack Overflow用户
提问于 2012-05-04 21:01:04
回答 7查看 28.1K关注 0票数 28

我正在使用Android兼容性库,偶尔会得到一个奇怪的NullPointerException

代码语言:javascript
复制
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)
    ...

显然,我做了一些错误的事情,允许FragmentManager进入这样一种状态,它会像这样崩溃,但我不知道是什么。相关代码 in FragmentManagerImpl并没有给我提供任何线索。我猜mActivity在代码的那个点上是null吧?但是这似乎是不可能的,因为活动已经在屏幕上出现了,而且我不会在其中添加任何片段--只是在ViewPager中切换它们。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-07-12 09:37:19

好吧,伙计们,在我的头撞在砖墙上一段时间后,我发现这与我的片段的setRetainInstance(true)声明直接相关。除去这些问题之后,问题就消失了。这似乎是一个兼容性库错误..。

我将在适当的谷歌项目下提出一些建议。祝你好运,如果你正在读这篇慢慢来的感叹!我希望这能让你解决这个问题。

票数 32
EN

Stack Overflow用户

发布于 2012-05-04 21:33:28

几天前,我收到了这个错误,非常困惑,但我发现这是因为一个FragmentTransaction似乎没有得到任何挂起的事务,所以当调用executePendingTransactions(); A NPE时,就会抛出它。

我解决了这个问题,确保每个事务实际上都改变了一些东西(例如添加片段1、->删除片段1、->提交/执行不起作用)。

还请确保寻呼机中没有任何片段成为null

票数 5
EN

Stack Overflow用户

发布于 2014-08-04 15:18:21

我也收到了同样的错误,因为我引用的是视图寻呼机适配器中的片段实例,而不是片段本身。

每次调用片段时都创建一个新的片段实例来解决此错误。很明显,这是正确的编程,但是万一其他的傻瓜犯了这个错误.

代码语言:javascript
复制
@Override
public Fragment getItem(int position) {
    if(position == 0)
        return new Walkthrough_Fragment_1();
    if(position == 1)
        return new Walkthrough_Fragment_4();
    if(position == 2)
        return new Walkthrough_Fragment_2();
    else{
        return new  Walkthrough_Fragment_3();
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10456077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档