我的应用程序的目标是API 8及更高版本,并使用ActionbarSherlock。 Activity
延伸SherlockFragmentActivity
。我对viewpager片段适配器如下:getFragmentManager()返回null
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()
行上崩溃。
我似乎无法弄清楚这是为什么...
这可能是由于super.destroyItem(....);在你的经理打电话之前被呼叫。 ((ListFragment)(object))可能有一些属性在调用之前被销毁。基本上是竞争条件,这将解释间歇性。尝试将代码后的呼叫移至super.destroy ...。 – 2013-03-14 17:09:54
同样在未来,请在崩溃问题时添加堆栈跟踪。 – Warpzit 2013-03-14 17:12:50