응용 프로그램 흐름이 그래픽에 표시되고 다음 텍스트로 설명됩니다.백 스택에서 최상위에없는 조각이 다시 시작됩니다.
- 조각 1
disallowAddToBackStack
설정하여 가기 backstack 최저 단편뿐만 아니다. fragmentTransaction.addToBackStack()
을 사용하여 조각 2를 스택으로 푸시합니다.- 조각 1의 새 인스턴스가 스택에 푸시됩니다.
- 최상위 조각 (조각 1)이 스택에서 팝됩니다.
- 활동 2가 전경이됩니다.
- 활동 1이 전경이됩니다.
private void changeContainerViewTo(int containerViewId, Fragment fragment, Activity activity, String backStackTag) { if (fragmentIsAlreadyPresent(containerViewId, fragment, activity)) { return; } final FragmentTransaction fragmentTransaction = activity.getFragmentManager().beginTransaction(); fragmentTransaction.replace(containerViewId, fragment); fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); if (backStackTag == null) { fragmentTransaction.disallowAddToBackStack(); } else { fragmentTransaction.addToBackStack(backStackTag); } fragmentTransaction.commit(); }
문제
때 활성 단편 (1)의 최저 인스턴스는 다시 마지막 단계에서 1 명 이력서 :
여기서 I는 단편을 처리 할 때 사용하는 일반적인 방법이다. 이 시점에서 조각 1은 null
을 getActivity()
에 반환합니다.
질문
- 왜하지 않은 단편은 스택의 가장 상위는 재개?
- 조각을 다시 시작하는 것이 올바른 경우 - 분리 된 조각을 어떻게 처리해야합니까?
먼저 Fragment1과 Fragment2는 동일한 컨테이너보기를 사용하며 두 번째 단계에서 사용하는 트랜잭션은 무엇입니까? – Evos
예, 조각 1과 조각 2는 동일한 컨테이너보기를 사용합니다. – JJD
그리고 거래 유형은 "대체", "추가"는 어떻습니까? – Evos