백 스택에서 여러 조각을 다른 조각으로 바꾸는 방법은 무엇입니까?

X-HuMan

백 스택 A, B, C에 다음 조각이 있습니다. 그런 다음 조각 D 를 추가하고 싶지만 백 스택 에는 A, B, C, D 대신 A와 D 를 넣고 싶습니다 . 내가와 B와 C를 제거하려고 할 때 문제 의는 여전히 다시 누른 상태에서 빈 화면을 만들어 기존의 하나입니다. 이것을 처리 할 방법이 있습니까?transaction.remove()backStackEntryCount

사용 popBackStack()하면 조각 A로 이동 한 다음 D가 나오므로 이상한 애니메이션 효과가 나타납니다.

편집 :이 질문은 백 스택에서 여러 조각의 순서를 제어하기 때문에 질문이 표시된대로 중복되지 않습니다.

DeeV

백 스택에 추가 할 때 특정 상태에있을 때 백 스택을 표시 할 이름을 포함 할 수 있습니다. FragmentManager # popBackStack (string, int); 에 대한 문서를 기반으로합니다 . :

관리자의 조각 백 스택에서 마지막 조각 전환을 팝합니다. 팝업 할 항목이 없으면 false가 반환됩니다. 이 함수는 비동기식입니다. 요청을 팝하기 위해 대기열에 넣지 만 애플리케이션이 이벤트 루프로 돌아올 때까지 작업이 수행되지 않습니다.

매개 변수

name String : null이 아닌 경우 검색 할 이전 백 상태의 이름입니다. 발견되면 해당 상태까지의 모든 상태가 표시됩니다. POP_BACK_STACK_INCLUSIVE 플래그는 명명 된 상태 자체가 팝되는지 여부를 제어하는 ​​데 사용할 수 있습니다. null이면 최상위 상태 만 표시됩니다.

flags int : 0 또는 POP_BACK_STACK_INCLUSIVE.

따라서이 경우 :

조각 A를 컨테이너와 루트 백 스택에 추가합니다. 터질 때 참조 할 수 있도록 이름을 지정하십시오.

조각 A :

FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction()
.replace(R.id.fragment_container, FragmentA, "FragmentA")
.addToBackStack("first")
.commit();

컨테이너에 조각 B를 추가합니다 (교체 또는 추가, 중요하지 않음). 원하는 경우 "null"또는 다른 이름으로 백 스택에 추가합니다. "first"와 달라야합니다.

조각 B :

FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction()
.replace(R.id.fragment_container, FragmentB, "FragmentB")
.addToBackStack(null)
.commit();

조각 B와 같이 조각 C를 추가하거나 대체합니다.

조각 C :

FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction()
.replace(R.id.fragment_container, FragmentC, "FragmentC")
.addToBackStack(null)
.commit();

Fragment B 및 C에서와 같이 Fragment D를 추가하거나 교체합니다.

단편 D :

FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction()
.replace(R.id.fragment_container, FragmentD, "FragmentD")
.addToBackStack(null)
.commit();

그런 다음 onBackPressed()먼저 "FragmentD"가 스택에 있는지 확인합니다. 만약 그렇다면, 루트 (이 경우는 "first")까지 다시 팝하십시오. 그렇지 않은 경우 평소처럼 눌러 진 뒷면을 처리하십시오.

@Override
public void onBackPressed() {
    FragmentManager fm = getFragmentManager();
    if (fm.findFragmentByTag("FragmentD") != null) {
       fm.popBackStack("first", 0); // Pops everything up to "first" 
    } else {
       super.onBackPressed(); // Pops backstack like normal or leaves App if at base.
    }
}

사용자가 Fragment A, B 또는 C에서 뒤로 버튼을 누를 때 "뒤로"이동하도록 허용해야합니다. 그런 다음 마지막으로 Fragment D에 들어가면 A로 돌아갑니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

조각 백 스택 맨 위에있는 항목 만 다른 조각으로 바꾸는 방법은 무엇입니까?

분류에서Dev

Android 조각을 ViewPager 내에서 다른 조각으로 바꾸는 방법은 무엇입니까?

분류에서Dev

ViewPager에서 한 조각의 값을 다른 조각으로 전달하는 방법은 무엇입니까?

분류에서Dev

탭 메뉴에서 한 조각을 다른 조각으로 전달하는 방법은 무엇입니까?

분류에서Dev

다른 조각에서 저장된 인스턴스로 조각을 다시 여는 방법은 무엇입니까?

분류에서Dev

각 열에 대해 다른 조건으로 R에 여러 열을 추가하는 방법은 무엇입니까?

분류에서Dev

한 번에 다른 이름으로 여러 파일의 이름을 바꾸는 방법은 무엇입니까?

분류에서Dev

Android에서 ImageView를 클릭하여 한 조각에서 다른 조각으로 이동하는 방법은 무엇입니까?

분류에서Dev

문자열 내에서 첫 번째 공백을 다른 문자로 바꾸는 방법은 무엇입니까?

분류에서Dev

여러 버튼을 사용하여 조각에서 조각으로 데이터를 전달하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트에서 한 번에 여러 문자열을 다른 여러 문자열로 바꾸는 방법은 무엇입니까?

분류에서Dev

다른 조각에서받은 조각의 textview 값을 설정하는 방법은 무엇입니까?

분류에서Dev

여러 공백을 단일 공백으로 바꾸는 방법은 무엇입니까?

분류에서Dev

파일 시스템 분기에서 각 파일의 모든 탭을 각각 2 개의 공백으로 바꾸는 방법은 무엇입니까?

분류에서Dev

탐색을 사용하여 bottomsheetdialog에서 조각으로 이동하는 방법은 무엇입니까?

분류에서Dev

다른 조각에서받은 recylerview로 값을 전송하는 방법은 무엇입니까?

분류에서Dev

다른 활동에서 활동의 조각으로 이동하는 방법은 무엇입니까?

분류에서Dev

목록의 항목을 여러 인덱스에서 다른 문자로 바꾸는 방법은 무엇입니까?

분류에서Dev

다른 Java 파일에서 조각을 새로 고치는 방법은 무엇입니까?

분류에서Dev

조각에서 조각으로 값을 전달하는 방법은 무엇입니까?

분류에서Dev

VBA-Excel (2013) 각 시트에서 동일한 값을 '찾기'하지만 각 시트에서 다른 값으로 바꾸는 방법은 무엇입니까?

분류에서Dev

다른 조각으로 ViewPager를 구현하는 방법은 무엇입니까?

분류에서Dev

각 탭에서 다른 모달을 여는 방법은 무엇입니까?

분류에서Dev

Android Studio-조각에서 다른 활동으로 컨텍스트 값을 전달하는 방법은 무엇입니까?

분류에서Dev

JSON 데이터를 한 조각에서 다른 조각으로 전달하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

SQL에서 다른 조건을 여러 내부 조인과 결합하는 방법은 무엇입니까?

분류에서Dev

C에서 공백으로 구분 된 여러 입력을 스캔하는 방법은 무엇입니까?

분류에서Dev

다른 파일의 여러 조건에 따라 파일 줄을 선택하는 방법은 무엇입니까?

분류에서Dev

사람이 읽을 수있는 백 스택 항목 형식을 얻는 방법은 무엇입니까? (조각)

Related 관련 기사

  1. 1

    조각 백 스택 맨 위에있는 항목 만 다른 조각으로 바꾸는 방법은 무엇입니까?

  2. 2

    Android 조각을 ViewPager 내에서 다른 조각으로 바꾸는 방법은 무엇입니까?

  3. 3

    ViewPager에서 한 조각의 값을 다른 조각으로 전달하는 방법은 무엇입니까?

  4. 4

    탭 메뉴에서 한 조각을 다른 조각으로 전달하는 방법은 무엇입니까?

  5. 5

    다른 조각에서 저장된 인스턴스로 조각을 다시 여는 방법은 무엇입니까?

  6. 6

    각 열에 대해 다른 조건으로 R에 여러 열을 추가하는 방법은 무엇입니까?

  7. 7

    한 번에 다른 이름으로 여러 파일의 이름을 바꾸는 방법은 무엇입니까?

  8. 8

    Android에서 ImageView를 클릭하여 한 조각에서 다른 조각으로 이동하는 방법은 무엇입니까?

  9. 9

    문자열 내에서 첫 번째 공백을 다른 문자로 바꾸는 방법은 무엇입니까?

  10. 10

    여러 버튼을 사용하여 조각에서 조각으로 데이터를 전달하는 방법은 무엇입니까?

  11. 11

    자바 스크립트에서 한 번에 여러 문자열을 다른 여러 문자열로 바꾸는 방법은 무엇입니까?

  12. 12

    다른 조각에서받은 조각의 textview 값을 설정하는 방법은 무엇입니까?

  13. 13

    여러 공백을 단일 공백으로 바꾸는 방법은 무엇입니까?

  14. 14

    파일 시스템 분기에서 각 파일의 모든 탭을 각각 2 개의 공백으로 바꾸는 방법은 무엇입니까?

  15. 15

    탐색을 사용하여 bottomsheetdialog에서 조각으로 이동하는 방법은 무엇입니까?

  16. 16

    다른 조각에서받은 recylerview로 값을 전송하는 방법은 무엇입니까?

  17. 17

    다른 활동에서 활동의 조각으로 이동하는 방법은 무엇입니까?

  18. 18

    목록의 항목을 여러 인덱스에서 다른 문자로 바꾸는 방법은 무엇입니까?

  19. 19

    다른 Java 파일에서 조각을 새로 고치는 방법은 무엇입니까?

  20. 20

    조각에서 조각으로 값을 전달하는 방법은 무엇입니까?

  21. 21

    VBA-Excel (2013) 각 시트에서 동일한 값을 '찾기'하지만 각 시트에서 다른 값으로 바꾸는 방법은 무엇입니까?

  22. 22

    다른 조각으로 ViewPager를 구현하는 방법은 무엇입니까?

  23. 23

    각 탭에서 다른 모달을 여는 방법은 무엇입니까?

  24. 24

    Android Studio-조각에서 다른 활동으로 컨텍스트 값을 전달하는 방법은 무엇입니까?

  25. 25

    JSON 데이터를 한 조각에서 다른 조각으로 전달하는 가장 좋은 방법은 무엇입니까?

  26. 26

    SQL에서 다른 조건을 여러 내부 조인과 결합하는 방법은 무엇입니까?

  27. 27

    C에서 공백으로 구분 된 여러 입력을 스캔하는 방법은 무엇입니까?

  28. 28

    다른 파일의 여러 조건에 따라 파일 줄을 선택하는 방법은 무엇입니까?

  29. 29

    사람이 읽을 수있는 백 스택 항목 형식을 얻는 방법은 무엇입니까? (조각)

뜨겁다태그

보관