getFragmentManager()返回null

时间:2013-03-14 16:25:04

标签: android android-fragments

我的应用针对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()行崩溃。

我似乎无法弄清楚为什么会这样......

2 个答案:

答案 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);