我的應用程序的目標是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