我的应用针对API 8及更高版本,并使用ActionbarSherlock。 Activity
扩展SherlockFragmentActivity
。我对viewpager的片段适配器如下:
public class MyFragmentAdapter extends FragmentPagerAdapter {
public Fragment getItem(int position) {
...
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
FragmentManager manager = ((ListFragment) object).getSherlockActivity().getSupportFragmentManager();
FragmentTransaction trans = manager.beginTransaction();
trans.remove((Fragment) object);
trans.commit();
}
}
destroyItem
用于删除FragmentPagerAdapter
的网页。这可以在第一次正常工作,也许是删除页面的前两次。但是在继续页面删除的某个时刻,manager
返回null并且应用程序在manager.beginTransaction()
行崩溃。
我似乎无法弄清楚为什么会这样......
答案 0 :(得分:1)
我弄明白了这个问题。事实证明,传递到ListFragment
的{{1}}有destroyItem
,因为我没有正确删除列表中的空FragmentManager == null
项。
答案 1 :(得分:0)
最后,几天前我可以找到我的错误。
解决方案很简单:
只需创建一个新的Bundle变量作为全局变量
Bundle datosGuardados;
存储savedInstanceState的数据
datosGuardados = savedInstanceState;
最后只是检查它是否为null,而不是使用任何getFragmentManager
if (datosGuardados != null) infoF = (InformacionFragment) getFragmentManager().findFragmentById(R.id.posicionamiento_layout);