1

我的应用面向 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用于删除 a 的页面FragmentPagerAdapter。这第一次工作正常,也许前两次页面被删除。但是在继续删除页面的某些时候,manager返回 null 并且应用程序崩溃了manager.beginTransaction()

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

4

2 回答 2

1

我解决了这个问题。事实证明,ListFragment传入的destroyItem有它FragmentManager == null,因为我没有正确删除WeakReference列表中的空项目。

于 2013-03-14T17:30:31.800 回答
0

最后,几天前我发现了我的错误。

解决方案很简单:

只需创建一个新的 Bundle 变量作为全局变量

Bundle datosGuardados;

存储 savedInstanceState 的数据

datosGuardados = savedInstanceState;

最后只检查它是否为空,而不是使用任何 getFragmentManager

if (datosGuardados != null) infoF = (InformacionFragment) getFragmentManager().findFragmentById(R.id.posicionamiento_layout);
于 2016-11-16T08:18:41.163 回答