我正在使用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)
...显然,我做了一些错误的事情,允许FragmentManager进入这样一种状态,它会像这样崩溃,但我不知道是什么。相关代码 in FragmentManagerImpl并没有给我提供任何线索。我猜mActivity在代码的那个点上是null吧?但是这似乎是不可能的,因为活动已经在屏幕上出现了,而且我不会在其中添加任何片段--只是在ViewPager中切换它们。
发布于 2012-07-12 09:37:19
好吧,伙计们,在我的头撞在砖墙上一段时间后,我发现这与我的片段的setRetainInstance(true)声明直接相关。除去这些问题之后,问题就消失了。这似乎是一个兼容性库错误..。
我将在适当的谷歌项目下提出一些建议。祝你好运,如果你正在读这篇慢慢来的感叹!我希望这能让你解决这个问题。
发布于 2012-05-04 21:33:28
几天前,我收到了这个错误,非常困惑,但我发现这是因为一个FragmentTransaction似乎没有得到任何挂起的事务,所以当调用executePendingTransactions(); A NPE时,就会抛出它。
我解决了这个问题,确保每个事务实际上都改变了一些东西(例如添加片段1、->删除片段1、->提交/执行不起作用)。
还请确保寻呼机中没有任何片段成为null。
发布于 2014-08-04 15:18:21
我也收到了同样的错误,因为我引用的是视图寻呼机适配器中的片段实例,而不是片段本身。
每次调用片段时都创建一个新的片段实例来解决此错误。很明显,这是正确的编程,但是万一其他的傻瓜犯了这个错误.
@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();
}
}https://stackoverflow.com/questions/10456077
复制相似问题