2014-04-28 4 views
5

여러 개의보기/조각 대체를 처리하는 하나의 활동이 내 안드로이드 앱에 있습니다. 이 액티비티에는 최상위 레벨 조각으로 이동하는 탐색 서랍도 있습니다. 최상위 조각에서 세부 수준 단편을 탐색 할 수 있습니다.
탐색 서랍은 왼쪽에서 밀어서 액세스 할 수 있습니다. 현재 조각이 최상위 조각이면 탐색 모음에 작업 표시 줄에 액세스 할 수도 있습니다. 현재 조각이 세부 수준 조각 인 경우 작업 표시 줄을 통해 다시 탐색 할 수 있습니다 (또는 뒤로 단추를 눌러).백 스택을 지우고 현재 조각을 최상위 조각으로 바꿉니다.

내게는 탐색 서랍을 통해 액세스 할 수있는 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 앱도 이와 유사합니다. 세부 사항에서 최상위 레벨로 이동하면 백 스택이 지워집니다. 그러나 조각 트랜잭션을 재생하지 않고 어떻게 백 스택을 정리할 수 있습니까?

답장을 보내 주셔서 감사합니다.

답변

1

나는 문제가 당신이 루프에서 파편을 터뜨리는 것이라고 생각한다. 보통 조각 조각을 단편 스택에 밀어 넣고 사용자 지정 애니메이션을 지정합니다. 오른쪽에서 새 조각으로 슬라이드하고 오른쪽으로 밀어 넣으면 슬라이드가 나타납니다. 이제 - 사용자가 조각 1, 다음 1.1, 1.2 등으로 이동 한 경우 사용자가 작업 표시 줄에서 홈 버튼을 클릭 할 때 1로 돌아가려면 조각 1 트랜잭션의 이름을 지정하십시오. 당신이 터지는 수행하는 당신은 그 이름을 사용합니다. popBackStackImmediate 대신에 popBackStack 함수를 사용하는 것도 고려하십시오.