코드로 조각 전환

FragmentTransaction는 프로그래밍 방식으로 조각을 추가하고 제거할 수 있게 해주는 클래스입니다. 하나의 활동이 사용하는 것처럼 백 스택과 함께 작동합니다. 파편을 보관할 ViewGroup만 있으면 됩니다.
FragmentTransaction 인스턴스로 작업하는 데 필요한 단계를 나열하겠습니다. 내가 작성할 모든 코드 스니펫은 레이아웃 xml 파일에 우리가 거래할 프래그먼트를 포함하거나 포함할 id가 fragmentcontainer인 FrameLayout가 있고 새 프래그먼트에 대한 참조가 있다는 가정을 기반으로 합니다. 이름은 newFragment입니다.
필요한 단계는 다음과 같습니다.
  • 활동에서 FragmentTransaction 인스턴스를 생성합니다.
  • 트랜잭션에 포함해야 하는 변경 사항을 지정합니다.
  • 트랜잭션을 백 스택에 추가합니다.
  • 트랜잭션을 커밋합니다.

  • 이러한 각 단계를 자세히 살펴보겠습니다.

    프래그먼트 트랜잭션 생성



    프래그먼트 트랜잭션은 활동 내에서 생성됩니다. FragmentTransaction 를 생성하려면 beginTransaction() 를 호출한 결과에 대해 getSupportFragmentManager() 메서드를 호출합니다.

    아래 코드 스니펫을 사용하여 FragmentTransaction를 생성할 수 있습니다.

    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    


    조각 트랜잭션의 변경 사항 지정


    FragmentTransaction에 포함될 수 있는 다양한 변경 사항이 있습니다. 각 변경 사항은 메서드로 지정됩니다. 이러한 방법 중 일부는 add() , replace()remove() 입니다.

    추가() 및 바꾸기()


    add() 메서드는 새 조각을 백 스택에 추가합니다. 아래 코드 조각은 메서드를 사용하는 방법을 보여줍니다.

    transaction.add(R.id.fragmentcontainer, newFragment);
    

    replace() 메서드는 기존 조각을 새 조각으로 바꿉니다. 아래 코드 조각은 메서드를 사용하는 방법을 보여줍니다.

    transaction.replace(R.id.fragmentcontainer, newFragment);
    


    코드 분류
    add()replace() 메서드는 두 개의 인수를 사용합니다. 그들은:
  • 프래그먼트
  • 가 포함된 ViewGroup의 id
  • 이전 조각을 추가하거나 교체할 새 조각입니다.

  • 위의 코드 스니펫에서 transaction은 FragmentTransaction 인스턴스이고, fragmentcontainer는 조각을 포함하는 활동의 ViewGroup ID이며, newFragment는 백 스택에 추가하거나 현재를 대체하려는 새 조각에 대한 참조입니다. 하나.

    제거하다()


    remove() 메서드는 조각 백스택에서 조각을 제거합니다.

    transaction.remove(currentFragment);
    


    코드 분류

    remove 메서드는 하나의 인수를 취합니다. 제거하려는 조각에 대한 참조입니다. 위의 코드 조각은 백 스택에서 currentFragment가 참조하는 조각을 제거합니다.

    백 스택에 FragmentTransaction 추가


    addToBackStack() 메서드를 사용하여 백 스택에 FragmentTransaction을 추가합니다.
    이 메서드는 프로그래밍 방식으로 트랜잭션을 검색해야 하는 경우 트랜잭션에 레이블을 지정하는 데 사용하는 문자열인 하나의 인수를 사용합니다.

    transaction.addToBackstack("transaction_id");
    


    위의 코드에서 "transaction_id"문자열은 나중에 트랜잭션을 검색하는 데 사용할 수 있습니다. 문자열을 전달하지 않으려는 경우 null을 addToBackStack() 메서드에 전달할 수도 있습니다.

    트랜잭션 커밋



    트랜잭션 인스턴스에서 메서드commit()를 호출하여 FragmentTransaction을 커밋합니다.

    transaction.commit();
    

    commit()를 호출하면 FragmentTransaction에 저장한 변경 사항이 애플리케이션에 적용됩니다.

    요약



    프래그먼트를 프로그래밍 방식으로 전환하려면 다음 단계를 수행하십시오.
  • 활동에 FragmentTransaction를 만듭니다.

  • FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    


  • 트랜잭션에 포함해야 하는 변경 사항을 지정합니다.

  • transaction.add(R.id.fragmentcontainer, newFragment);
    


  • 트랜잭션을 백 스택에 추가합니다.

  • transaction.addToBackstack("transaction_id");
    


  • 트랜잭션을 커밋합니다.

  • transaction.commit();
    



    다음 예정: Dynamic Fragments

    좋은 웹페이지 즐겨찾기