여러 개의보기/조각 대체를 처리하는 하나의 활동이 내 안드로이드 앱에 있습니다. 이 액티비티에는 최상위 레벨 조각으로 이동하는 탐색 서랍도 있습니다. 최상위 조각에서 세부 수준 단편을 탐색 할 수 있습니다.
탐색 서랍은 왼쪽에서 밀어서 액세스 할 수 있습니다. 현재 조각이 최상위 조각이면 탐색 모음에 작업 표시 줄에 액세스 할 수도 있습니다. 현재 조각이 세부 수준 조각 인 경우 작업 표시 줄을 통해 다시 탐색 할 수 있습니다 (또는 뒤로 단추를 눌러).백 스택을 지우고 현재 조각을 최상위 조각으로 바꿉니다.
내게는 탐색 서랍을 통해 액세스 할 수있는 3 개의 최상위 조각이 있습니다.
fragment[1]
, fragment[2]
, fragment[1]
에서 fragment[3]
, 당신은 세부 수준 fragment[1.1]
로 이동할 수 있습니다.
이제 사용자는 현재 fragment[1.1]
에서 최상위 fragment[3]
으로 바로 이동하려고합니다. 사용자는 내비게이션 상자에서 슬라이드를하고 fragment[3]
항목을 클릭하면됩니다.
이제 사용자가 뒤로 버튼을 누르면 응용 프로그램이 닫혀 야합니다 (최상위 조각으로 이동했기 때문에). 따라서 사용자가 최상위 조각으로 이동할 때마다 배 스택을 지워야합니다. 서랍 표시기를 표시해야하는지 확인하려면 getBackStackEntryCount() - 값을 읽고 0과 비교하십시오.
요약으로. 세부 수준 조각에서 최상위 조각으로 이동하여 뒷받침을 정리하고 싶습니다.
문제
: 제가getSupportFragmentManager().popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
,
단편 트랜잭션을 실행하여 가기 backstack을 지우
이 역방향 재생된다 (예
fragment[1.1]
의해
fragment[1]
교체). 그리고 나는 그들이 재생되기를 원하지 않는다. onCreateView, onViewCreated, onStart, ..에서 많은 초기화 작업을 수행하며 데이터를 가져 오는 작업도 시작합니다. 그리고 그 모든 것을 건너 뛰고 싶습니다. 단지 백 스택에없는 새로운 최상위 수준으로 상세 수준보기를 바꾸십시오.
팝업 트랜잭션을 사용하지 않고 백 스택을 지우는 해결책을 찾을 수 없습니다.
이 문제를 해결할 수있는 깨끗한 솔루션이 있습니까? 내 자신의 백 스택 행동을 구현해야합니까?
편집 : YouTube 앱도 이와 유사합니다. 세부 사항에서 최상위 레벨로 이동하면 백 스택이 지워집니다. 그러나 조각 트랜잭션을 재생하지 않고 어떻게 백 스택을 정리할 수 있습니까?
답장을 보내 주셔서 감사합니다.