백 스택에서 조각 제거
태블릿을 세로로 들고있을 때 활동에 3 개의 조각이 있습니다. 하지만 가로 모드에서는이 조각 중 2 개만 있습니다. 내가 가진 문제는 세로에서 가로로 이동할 때 활동이 세 번째 조각을 만드는 것입니다. 이 조각을 만들 수 없으므로 오류가 발생합니다.
이 조각이 백 스택에 있기 때문에 생성되고 있음을 알아 냈습니다.
onDestroy 메서드에서 조각을 제거하려고했습니다.
FragmentTransaction f = fragmentManager.beginTransaction();
f.remove(mf);
f.commit();
그러나 onSaveInstanceState 후에이 기능을 사용할 수 없다는 오류가 발생합니다.
이 조각을 백 스택에서 꺼내는 올바른 방법은 무엇입니까?
최신 정보
문제가있는 조각이이 라이브러리의 mapFragment라고 추가해야합니다.
https://github.com/petedoyle/android-support-v4-googlemaps
내가 사용하는 방식은 이렇게
mf = MapFragment.newInstance(1, true);
ft = fragmentManager.beginTransaction();
ft.replace(R.id.mapContainer, mf);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack("map");
ft.commit();
pop 메서드를 FragmentTransaction
사용하여 백 스택에서 백 상태에 추가 하고 제거 FragmentManager
합니다.
FragmentManager manager = getActivity().getSupportFragmentManager();
FragmentTransaction trans = manager.beginTransaction();
trans.remove(myFrag);
trans.commit();
manager.popBackStack();
원하는 백 스택 인덱스로 이동하는 코드를 만들었는데 내 목적에 잘 맞았습니다.
즉. Fragment1, Fragment2 및 Fragment3이 있습니다. Fragment3에서 Fragment1로 이동하고 싶습니다.
Fragment1로 점프하는 Fragment3에서 onBackPressed라는 메서드를 만들었습니다.
Fragment3 :
public void onBackPressed() {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.popBackStack(fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount()-2).getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
활동에서 현재 프래그먼트가 Fragment3인지 알아야하므로 super를 호출하는 대신 내 프래그먼트의 onBackPressed를 호출합니다.
FragmentActivity :
@Override
public void onBackPressed() {
Fragment f = getSupportFragmentManager().findFragmentById(R.id.my_fragment_container);
if (f instanceof Fragment3)
{
((Fragment3)f).onBackPressed();
} else {
super.onBackPressed();
}
}
제거하려는 조각이 스택의 맨 위에 있지 않으면 어떻게됩니까?
그런 다음이 기능을 사용할 수 있습니다.
popBackStack(int arg0, int arg1);
popBackStack(String arg0, int arg1);
참고 URL : https://stackoverflow.com/questions/9033019/removing-a-fragment-from-the-back-stack
'IT박스' 카테고리의 다른 글
UITextField 키보드를 비활성화 하시겠습니까? (0) | 2020.12.14 |
---|---|
Flask : 요청 변수의 현재 페이지 (0) | 2020.12.14 |
ElasticSearch가 내 플러그인을 어디에 설치하는지 어떻게 알 수 있습니까? (0) | 2020.12.14 |
Django modelform은 필수 필드가 아닙니다. (0) | 2020.12.14 |
몽구스 : 깊은 인구 (밀집된 필드 채우기) (0) | 2020.12.14 |