코드로 조각 전환
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()
메서드는 두 개의 인수를 사용합니다. 그들은:
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
에 저장한 변경 사항이 애플리케이션에 적용됩니다.
요약
프래그먼트를 프로그래밍 방식으로 전환하려면 다음 단계를 수행하십시오.
transaction.addToBackstack("transaction_id");
트랜잭션 인스턴스에서 메서드
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
Reference
이 문제에 관하여(코드로 조각 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/petemode/switching-fragments-with-code-k8f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)