내 앱이 API 8 이상을 대상으로하고 ActionbarSherlock을 사용합니다. Activity
은 SherlockFragmentActivity
까지 확장됩니다.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
의 페이지를 제거하는 데 사용됩니다 다음과 같이 viewpager에 대한 나의 단편 어댑터입니다. 이것은 처음에는 잘 작동합니다. 어쩌면 처음 두 번 페이지가 삭제되었을 수도 있습니다. 그러나 페이지 삭제가 계속되는 시점에서 manager
은 null을 반환하고 manager.beginTransaction()
행에서 앱이 다운됩니다.
나는이 이유를 알아낼 수 없습니다 ...
이것은 super.destroyItem (....)으로 인한 것일 수 있습니다. 관리자 호출 전에 호출됩니다. 그것은 ((ListFragment) (object))이 호출 전에 파괴되는 속성 중 일부를 가질 수 있습니다. 본질적으로 경주 상태는 간헐적 인 성격을 설명합니다. 코드 뒤에 super.destroy ...로 이동해보십시오. –
추후에도 충돌 문제가 발생하면 스택 추적을 추가하십시오. – Warpzit