방금 추가하고 싶었습니다 :-
다음을 사용하여 백 스택에서 튀어 나옴
fragmentManager.popBackStack ()
트랜잭션에서 조각을 제거하는 것입니다. 화면에서 조각을 제거하지는 않습니다. 따라서 이상적으로는 보이지 않지만 두 개 또는 세 개의 조각이 서로 겹쳐져있을 수 있으며 뒤로 키를 누르면 UI가 어수선하게 쌓일 수 있습니다.
간단한 예를 들면 다음과 같습니다.
fragmentmanager.replace ()를 사용하여 Fragmnet B를로드하는 fragmentA가 있고 addToBackStack을 수행하여이 트랜잭션을 저장 한다고 가정하십시오 . 흐름은 :-
1 단계-> FragmentA-> FragmentB (FragmentB로 옮겼지만 Fragment A는 백그라운드에 있으며 보이지 않습니다).
이제 fragmentB에서 일부 작업을 수행하고 저장 버튼을 누릅니다. 저장 후 조각 A로 돌아갑니다.
2 단계-FragmentB를 저장하면 FragmentA로 돌아갑니다.
3 단계-> 그래서 일반적인 실수는 ... 조각 B에서 조각 관리자로 조각 관리자 .replace () 조각 B를 수행합니다.
그러나 실제로 일어나는 일은 FragmentB를 대체하여 Fragment A를 다시로드하고 있습니다. 이제 두 개의 FragmentA가 있습니다 (하나는 STEP-1에서, 하나는이 STEP-3에서).
FragmentsA의 두 인스턴스가 서로 겹쳐져 표시되지 않을 수 있지만 거기에 있습니다.
따라서 위의 방법으로 백 스택을 지우더라도 트랜잭션은 지워지지 만 실제 조각은 지워지지 않습니다. 따라서 이상적으로는 저장 버튼을 누르면 fm.popBackStack () 또는 fm.popBackImmediate () 를 수행하여 fragmentA로 돌아 가면됩니다 .
따라서 올바른 Step3-> fm.popBackStack ()은 이미 메모리에있는 fragmentA로 돌아갑니다.