Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

Fragment

활동 내에서 호스팅되는 여러 개의 독립적인 화면으로 앱을 분할합니다.
최근 업데이트 현재 안정화 버전 다음 버전 후보 베타 버전 알파 버전
2020년 8월 19일 1.2.5 - - 1.3.0-alpha08

종속 항목 선언

Fragment의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.

다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.

dependencies {
    def fragment_version = "1.2.5"

    // Java language implementation
    implementation "androidx.fragment:fragment:$fragment_version"
    // Kotlin
    implementation "androidx.fragment:fragment-ktx:$fragment_version"
    // Testing Fragments in Isolation
    debugImplementation "androidx.fragment:fragment-testing:$fragment_version"
}

종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참조하세요.

의견

제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 만들기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 표를 추가할 수 있습니다.

새 문제 만들기

자세한 내용은 Issue Tracker 문서를 참조하세요.

버전 1.3.0

버전 1.3.0-alpha08

2020년 8월 19일

androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08androidx.fragment:fragment-testing:1.3.0-alpha08이 출시되었습니다. 버전 1.3.0-alpha08에 포함된 커밋을 확인하세요.

새 상태 관리자

이 출시 버전에는 수명 주기 메서드, 애니메이션 및 전환의 디스패치와 연기된 트랜잭션 처리 방식에 영향을 주는 FragmentManager의 내부 상태 관리에 관한 주요 리팩터링이 포함되어 있습니다. 이 기능은 기본적으로 사용 설정되어 있습니다. 자세한 내용은 프래그먼트: 내부 요소 다시 빌드 블로그 게시물을 참조하세요. (b/139536619, b/147749580)

  • FragmentManager.enableNewStateManager(boolean)실험용 API를 사용하여 FragmentManager가 새 상태 관리자를 사용할지 여부를 제어할 수 있습니다. (I7b6ee)

다음 문제는 새 상태 관리자를 사용할 때만 수정됩니다.

  • 이제 새 프래그먼트가 시작되기 전에 replace 작업의 이전 프래그먼트가 올바르게 중지됩니다. (b/161654580)
  • 프래그먼트는 이제 동일한 프래그먼트에서 여러 경쟁 애니메이션을 방지하여 Animation이 모든 Transition 효과를 재정의하거나 개별 프래그먼트의 AnimatorTransition이 모두 실행되는 경우를 방지합니다. (b/149569323)
  • 이제 마지막 진입 프래그먼트와 첫 번째 이탈 프래그먼트만이 아니라 진입 및 이탈하는 모든 프래그먼트의 enterTransitionexitTranstion이 실행됩니다. (b/149344150)
  • 연기된 프래그먼트가 더 이상 CREATED 상태에서 중단되지 않고 대신 다른 프래그먼트와 함께 STARTED로 이동합니다. (b/129035555)
  • 연기되고 재정렬된 트랜잭션과 재정렬되지 않은 트랜잭션을 혼합할 때 FragmentManager가 순서에 상관없이 작업을 실행하는 문제가 수정되었습니다. (b/147297731)
  • 여러 프래그먼트를 동시에 표시하는 경우 프래그먼트를 연기할 때 중간 프래그먼트가 일시적으로 표시되는 문제가 더 이상 발생하지 않습니다. (b/37140383)
  • 이제 FragmentManageronAttachFragment() 콜백 내에서 findFragmentById() 또는 findFragmentByTag()를 호출할 때 올바른 프래그먼트를 반환합니다. (b/153082833)
  • 다른 프래그먼트를 대체하는 프래그먼트가 연기될 때 이 프래그먼트는 제거되는 프래그먼트에서 onCreateView()를 더 이상 호출하지 않습니다. (b/143915710)
  • 이제 프레임워크 Transition과 AndroidX Transition 인스턴스를 결합하려고 할 때 오류 메시지에 잘못된 전환이 있는 프래그먼트가 표시됩니다. (b/155574969)

동작 변경사항

  • 이제 프래그먼트의 onCreate() 수명 주기 메서드에서 ActivityResultLauncherlaunch()를 호출할 수 있습니다. (b/161464278)
  • onCreate() 이후에 registerForActivityResult()를 호출하는 경우 이제 예외가 발생하여 이 호출이 허용되지 않음을 나타냅니다(이전에는 구성 변경 후에 결과를 전달하지 않았으며 이에 대한 알림도 표시되지 않았음). . (b/162255449)
  • 이제 FragmentActivityActivity 1.2.0-alpha08에 도입된 OnContextAvailableListener API를 사용하여 FragmentManager의 상태를 복원합니다. FragmentActivity의 서브클래스에 추가된 모든 리스너는 이 리스너 이후에 실행됩니다. (I513da)

버그 수정

  • 이제 startIntentSenderForResult() 사용 시 전달되는 ActivityOptions가 준수됩니다. (b/162247961)

알려진 문제

  • 새 상태 관리자를 사용할 때 onViewCreated() 이후와 onResume() 이전에 프래그먼트의 루트 뷰 공개 상태를 직접 설정하면 루트 뷰의 공개 상태를 제어하는 FragmentManager에서 설정된 공개 상태를 재정의합니다. 이 문제를 해결하려면 항상 hide()show() 작업을 사용하여 프래그먼트의 공개 상태를 변경해야 합니다. (b/164481490)

버전 1.3.0-alpha07

2020년 7월 22일

androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07androidx.fragment:fragment-testing:1.3.0-alpha07이 출시되었습니다. 버전 1.3.0-alpha07에 포함된 커밋을 확인하세요.

새로운 기능

  • 이제 FragmentScenario에서 항상 Fragment를 RESUMED 상태로 이동하는 대신 초기 수명 주기 상태를 CREATED, STARTED 또는 RESUMED로 설정할 수 있습니다. (b/159662750)
  • 값을 반환할 수 있는 Kotlin의 구체화된 확장 메서드인 withFragment의 형태로 onFragmentFragmentScenario API에 대한 대안을 추가했습니다. 특히, 특정 블록에서 발생한 예외가 다시 발생합니다. (b/158697631)

동작 변경사항

  • 이제 FragmentScenariomoveToState()를 구현하기 위해 setMaxLifecycle()을 사용하여 모든 API 수준에서 일관된 동작을 보장하고 기본 Activity에서 Fragment의 상태를 분리합니다. (b/156527405)
  • 이제 ViewTreeSavedStateRegistryOwner에서 반환하는 SavedStateRegistryOwner는 프래그먼트 뷰의 수명 주기에 연결됩니다. 이렇게 하면, 프래그먼트 뷰와 동시에 상태가 저장되고 복원됩니다. (b/158503763)

버그 수정

  • 이제 프래그먼트는 인셋 요청이 삭제되는 경우를 방지하기 위해 ViewCompat.requestApplyInsets()를 호출하기 전에 프래그먼트 뷰가 연결될 때까지 대기합니다. (b/158095749)
  • 이제 clearFragmentResultListener를 호출하면 수명 주기 관찰자가 적절히 삭제됩니다. (b/159274993)

Version 1.3.0-alpha06

2020년 6월 10일

androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06androidx.fragment:fragment-testing:1.3.0-alpha06이 출시되었습니다. 버전 1.3.0-alpha06에 포함된 커밋을 확인하세요.

새로운 기능

  • FragmentActivityFragmentonAttachFragment() 콜백이 지원 중단되었습니다. 더 유연한 대안을 제공하려고 새 FragmentOnAttachListener가 추가되었습니다. onAttachFragment()를 테스트 가능한 별도의 리스너에 위임하고 직계 하위 FragmentManager 이외의 FragmentManager에 리스너를 추가하는 작업을 지원할 수 있습니다. (I06d3d)

버그 수정

  • 이제 상위 프래그먼트가 하위 프래그먼트 전에 뷰 상태를 복원하여 DialogFragment가 다른 DialogFragment를 하위 프래그먼트로 표시할 때 구성 변경 후 시각적 순서 지정 문제를 수정합니다. (b/157195715)
  • UseRequireInsteadOfGet 린트 검사가 ?.!! 연산자의 연결된 사용을 올바르게 처리하지 못하는 문제가 수정되었습니다. (b/157677616)

버전 1.3.0-alpha05

2020년 5월 20일

androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05androidx.fragment:fragment-testing:1.3.0-alpha05가 출시되었습니다. 버전 1.3.0-alpha05에 포함된 커밋을 확인하세요.

새로운 기능

API 변경사항

  • 이제 setFragmentResult()setFragmentResultListener() API는 null이 아닌 BundleFragmentResultListener를 각각 사용합니다. 이전에 설정한 결과 또는 리스너를 명시적으로 삭제하려면 새 clearFragmentResult()clearFragmentResultListener() 메서드를 사용하세요. (b/155416778)
  • 람다를 사용하는 setFragmentResultListener() Kotlin 확장 프로그램이 이제 inline으로 표시됩니다. (b/155323404)

동작 변경사항

  • 이전에 지원 중단된 FragmentstartActivityForResult(), startIntentSenderForResult(), requestPermissions가 이제 내부적으로 ActivityResultRegistry를 사용하므로 이러한 API를 사용할 때 요청 코드에 하위 비트(0xFFFF 미만)만 사용하는 제한사항이 삭제됩니다. (b/155518741)

문서 업데이트

  • Fragment(@LayoutRes int)DialogFragment(@LayoutRes int) 생성자에 관한 문서를 확장하여 기본 FragmentFactory를 사용할 때 서브클래스의 인수가 없는 생성자에서 호출해야 한다고 명시했습니다. (b/153042497)

버전 1.3.0-alpha04

2020년 4월 29일

androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04androidx.fragment:fragment-testing:1.3.0-alpha04 버전이 출시되었습니다. 버전 1.3.0-alpha04에 포함된 커밋을 확인하세요.

새로운 기능

  • FragmentManager의 새 API를 통해 두 프래그먼트 간에 결과를 전달하는 기능이 추가되었습니다. 이는 탐색의 계층 구조 프래그먼트(상위/하위), DialogFragment 및 Navigation의 프래그먼트에서 작동하며 결과가 STARTED 이상인 경우에만 프래그먼트로 전송되도록 합니다. (b/149787344 참조)

API 변경사항

  • 타겟 프래그먼트 API가 지원 중단되었습니다. 프래그먼트 간에 데이터를 전달하려면 대신 새 Fragment Result API를 사용해야 합니다. (b/149787344 참조)
  • 프래그먼트의 startActivityForResult()/onActivityResult()requestPermissions()/onRequestPermissionsResult() API가 지원 중단되었습니다. Activity Result API를 사용하세요. (aosp/1290887 참조)
  • 활동 1.2.0-alpha04브레이킹 체인지: prepareCall() 메서드는 registerForActivityResult()로 이름을 바꾸었습니다. (aosp/1278717 참조)

버그 수정

  • 이제 프래그먼트의 수명 주기 동작을 미러링하여 onSaveInstanceState()가 호출되기 전에 프래그먼트의 getViewLifecycleOwner()가 중지됩니다. (b/154645875 참조)
  • 이제 프래그먼트에서 setMenuVisibility(false)를 호출하면 하위 프래그먼트에서 제공하는 메뉴의 공개 상태가 올바르게 변경됩니다. (b/153593580 참조)
  • FragmentContainerView를 사용하여 DialogFragment의 뷰 계층 구조에 프래그먼트를 추가할 때 발생하는 illegalStateException을 수정했습니다. (b/154366601 참조)
  • 활동 외부에서 프래그먼트를 호스팅할 때 프래그먼트의 getDefaultViewModelProviderFactory() 메서드가 더 이상 비정상 종료되지 않습니다. (b/153762914 참조)

버전 1.3.0-alpha03

2020년 4월 1일

androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03androidx.fragment:fragment-testing:1.3.0-alpha03 버전이 출시되었습니다. 버전 1.3.0-alpha03에 포함된 커밋을 확인하세요.

API 변경사항

  • FragmentprepareCall 메서드는 현재 final입니다. (b/152439361)

버그 수정

  • BottomSheetDialogFragment를 사용할 때 프래그먼트 1.3.0-alpha02에 도입되는 회귀 문제가 해결되었습니다. (b/151652127, aosp/1263328, aosp/1265163)
  • 구성 변경 후 프래그먼트에서 prepareCall 사용 시 비정상 종료 문제가 해결되었습니다. (b/152137004)
  • setTargetFragment() 사용 시 공유 요소 및 이탈 전환이 무시되던 문제가 해결되었습니다. (b/152023196)
  • Fragment 1.2.4에서: 보관된 프래그먼트의 난독화를 허용하도록 Fragment ProGuard 규칙이 업데이트되었습니다. (b/151605338)
  • Fragment1.2.4에서: 수명 주기와 뷰 수명 주기가 항상 동기화되므로 observe 호출 시 this 또는 viewLifecycleOwner를 안전하게 사용할 수 있도록 DialogFragment 클래스에서 FragmentLiveDataObserve 린트 규칙이 사용 중지되었습니다. (b/151765086)

종속 항목 변경사항

  • 프래그먼트는 Activity 1.2.0-alpha03에 따라 달라지며, 이는 Activity 1.2.0-alpha02에 도입된 Activity Result API를 대폭 개선했습니다.

버전 1.3.0-alpha02

2020년 3월 18일

androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02androidx.fragment:fragment-testing:1.3.0-alpha02 버전이 출시되었습니다. 버전 1.3.0-alpha02에 포함된 커밋을 확인하세요.

새로운 기능

  • 플로 테스트를 위한 후크를 제공하는 것에 더해 프래그먼트 내 메서드를 재정의하지 않고 startActivityForResult()+onActivityResult()requestPermissions()+onRequestPermissionsResult() 플로를 처리하기 위해 활동 1.2.0-alpha02에 도입된 ActivityResultRegistry API 지원이 추가되었습니다. 업데이트된 활동에서 결과 가져오기를 참조하세요. (b/125158199)

API 변경사항

  • DialogFragment는 이제 onCreateView()가 기본적으로 확장해야 하는 레이아웃을 표시하는 @LayoutRes를 가져오는 생성자를 제공합니다. (b/150327080)
  • onActivityCreated() 메서드가 지원 중단되었습니다. 프래그먼트의 뷰를 터치하는 코드는 onViewCreated()(onActivityCreated() 직전에 호출됨)에서 실행되어야 하며 다른 초기화 코드는 onCreate()에 있어야 합니다. 활동 onCreate()가 완료되었을 때 콜백을 받으려면 LifeCycleObserveronAttach() 내 활동의 Lifecycle에 등록되어 있어야 하며 onCreate() 콜백이 수신된 후에는 제거되어야 합니다. (b/144309266)

버그 수정

  • Fragment 1.2.3에서: onCreateDialog()에서 getLayoutInflater() 호출 시 StackOverflowError를 일으키던 DialogFragment 내 버그가 수정되었습니다. (b/117894767, aosp/1258664)
  • Fragment 1.2.3에서: 사용되지 않는 Fragment 클래스를 제거할 수 있도록 Fragment에 포함된 ProGuard 규칙의 범위를 줄였습니다. (b/149665169)
  • Fragment 1.2.3에서: Kotlin 속성 이름을 따르는 로컬 변수 이름을 사용할 때 UseRequireInsteadOfGet 린트 검사 내 거짓양성이 수정되었습니다. (b/149891163)
  • Fragment 1.2.3에서: FragmentContainerView가 더 이상 레이아웃 미리보기에서 잘못된 생성자를 사용하기 위해 UnsupportedOperationException를 발생시키지 않습니다. (b/149707833)

알려진 문제

  • BottomSheetDialogFragment이 화면에 대화상자를 제대로 배치하지 않습니다. (b/151652127)

버전 1.3.0-alpha01

2020년 3월 4일

androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01androidx.fragment:fragment-testing:1.3.0-alpha01 버전이 출시되었습니다. 버전 1.3.0-alpha01에 포함된 커밋을 확인하세요.

새로운 기능

API 변경사항

  • Fragment의 setRetainInstance() 메서드가 지원 중단되었습니다. ViewModels가 도입되면서 개발자는 활동, 프래그먼트, 탐색 그래프와 연결할 수 있는 상태를 유지하기 위한 특정 API를 갖게 됩니다. 이를 통해 개발자는 보존된 상태가 아닌 일반 상태의 Fragment를 사용하고 별도로 보관하고자 하는 특정 상태를 유지할 수 있습니다. 이를 통해 단일 생성의 유용한 속성을 유지하면서 누수의 일반적인 원인을 피하고 보관되는 상태의 파괴를 방지할 수 있습니다(소위 수신하는 ViewModelonCleared() 콜백 생성자). (b/143911815)
  • ViewPager2 1.0.0의 출시로 ViewPager와 상호작용하는 FragmentPagerAdapterFragmentStatePagerAdapter 클래스가 지원 중단되었습니다. ViewPager에서 ViewPager2로 이전을 참조하세요. (b/145132715)

버그 수정

  • 이제 Fragment ProGuard 규칙이 모든 Fragment 인스턴스가 아닌 사용된 기본 생성자 Fragment 클래스만 올바르게 유지하여 Fragment 1.2.1에 도입되는 회귀 문제를 수정합니다. (b/149665169
  • Fragment 1.2.2에 추가된 require___() 린트 규칙은 우선 적용된 Kotlin 속성 이름(예: view)과 동일한 이름을 공유하는 로컬 변수에 더 이상 거짓양성을 일으키지 않습니다. (b/149891163)
  • Android 스튜디오에서 레이아웃 미리보기를 사용할 때 FragmentContainerView에서 더 이상 UnsupportedOperationException을 일으키지 않습니다. (b/149707833)
  • 상태가 저장된 후 추가된 보관된 프래그먼트가 계속해서 다시 생성되지 않고 구성이 변경될 때마다 파괴되는 문제가 해결되었습니다. (b/145832397)

버전 1.2.5

버전 1.2.5

2020년 6월 10일

androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5androidx.fragment:fragment-testing:1.2.5가 출시되었습니다. 버전 1.2.5에 포함된 커밋을 확인하세요.

버그 수정

  • 이제 프래그먼트의 수명 주기 동작을 미러링하여 onSaveInstanceState()가 호출되기 전에 프래그먼트의 getViewLifecycleOwner()가 중지됩니다. 이전에는 Fragment 1.3.0-alpha04에서 출시되었습니다. (b/154645875)
  • 이제 프래그먼트에서 setMenuVisibility(false)를 호출하면 하위 프래그먼트에서 제공하는 메뉴의 공개 상태가 올바르게 변경됩니다. 이전에는 Fragment 1.3.0-alpha04에서 출시되었습니다. (b/153593580)

버전 1.2.4

버전 1.2.4

2020년 4월 1일

androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4androidx.fragment:fragment-testing:1.2.4 버전이 출시되었습니다. 버전 1.2.4에 포함된 커밋을 확인하세요.

버그 수정

  • 보관된 프래그먼트의 난독화를 허용하도록 Fragment Progard 규칙이 업데이트되었습니다. (b/151605338)
  • 수명 주기와 뷰 수명 주기가 항상 동기화되므로 observe 호출 시 this 또는 viewLifecycleOwner를 안전하게 사용할 수 있도록 DialogFragment 클래스에서 FragmentLiveDataObserve 린트 규칙이 사용 중지되었습니다. (b/151765086)

버전 1.2.3

버전 1.2.3

2020년 3월 18일

androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3androidx.fragment:fragment-testing:1.2.3 버전이 출시되었습니다. 버전 1.2.3에 포함된 커밋을 확인하세요.

버그 수정

  • onCreateDialog()에서 getLayoutInflater() 호출 시 StackOverflowError를 일으키는 DialogFragment 내 버그가 수정되었습니다. (b/117894767, aosp/1258665)
  • 사용되지 않는 Fragment 클래스를 제거할 수 있도록 Fragment에 포함된 ProGuard 규칙의 범위를 줄였습니다. (b/149665169)
  • Kotlin 속성 이름을 따르는 로컬 변수 이름을 사용할 때 UseRequireInsteadOfGet 린트 검사 내 거짓양성이 수정되었습니다. (b/149891163)
  • FragmentContainerView가 더 이상 레이아웃 미리보기에서 잘못된 생성자를 사용하기 위해 UnsupportedOperationException을 발생시키지 않습니다. (b/149707833)

버전 1.2.2

버전 1.2.2

2020년 2월 19일

androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2androidx.fragment:fragment-testing:1.2.2 버전이 출시되었습니다. 버전 1.2.2에 포함된 커밋을 확인하세요.

새로운 린트 검사

  • 린트는 onCreateView(), onViewCreated(), onActivityCreated()에서 OnBackPressedDispatcher를 호출하기 위해 LifecycleOwnerviewLifecycleOwner을 사용하도록 제안합니다. (b/142117657)
  • fragment-testing 아티팩트를 사용할 때 올바른 debugImplementation을 사용하고 있는지 확인하는 새로운 린트 검사가 추가되었습니다. (b/141500106)
  • 이제 Fragment에서 연결된 require___() 메서드를 사용하여 getrequire 등가물을 포함하는 모든 Fragment API에 대해 checkNotNull(get___()), requireNonNull(get___()) 또는 get___()!! 대신 보다 자세한 오류 메시지를 제공합니다. (aosp/1202883)

버그 수정

  • R8 경고를 피하기 위해 Fragment ProGuard 파일을 수정했습니다.(b/148963981)
  • observelivedata-ktx 확장 메서드 버전을 처리하기 위해 observe 사용 시 viewLifecycleOwner 사용을 제안하던 기존 린트 검사 기능을 개선했습니다. (b/148996309)
  • 린트 검사의 상당 부분의 형식을 수정했습니다.(aosp/1157012)

외부 기여

  • Slack을 대신하여 require___() 린트 검사에 참여해 주신 잭 스위어스님에게 감사드립니다. (aosp/1202883)

버전 1.2.1

버전 1.2.1

2020년 2월 5일

androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1androidx.fragment:fragment-testing:1.2.1 버전이 출시되었습니다. 버전 1.2.1에 포함된 커밋을 확인하세요.

버그 수정

  • 이제 Class 인스턴스(또는 Kotlin 구체화된 버전)를 사용하는 addreplace 메서드를 통해 추가된 프래그먼트는 ProGuard에서 보관하는 기본 생성자를 유지합니다. (b/148181315)
  • FragmentStatePagerAdapterFragmentPagerAdapter는 더 이상 finishUpdate() 실행 시 FragmentManager에서 발생시키는 예외를 포착하지 않습니다. (aosp/1208711)
  • FragmentManager.findFragment()<fragment> 태그를 통해 추가된 프래그먼트에서 작동하지 않는 문제가 해결되었습니다. (b/147784323)
  • 이제 <fragment> 태그를 사용하여 확장된 프래그먼트는 항상 레이아웃에서 onCreate() 전에 onInflate()를 호출합니다. (aosp/1215856)
  • 활동이 이미 파괴된 경우 FragmentManager 인스턴스에서 toString()을 호출해도 NullPointerException을 야기하지 않습니다. (b/148189412)

종속 항목 변경사항

버전 1.2.0

버전 1.2.0

2020년 1월 22일

androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0androidx.fragment:fragment-testing:1.2.0 버전이 출시되었습니다. 버전 1.2.0에 포함된 커밋을 확인하세요.

1.1.0 이후 중요 변경사항

  • FragmentContainerView: FragmentContainerViewFrameLayout 또는 다른 레이아웃 사용을 대체하여 동적으로 추가된 프래그먼트에 강력히 권장되는 컨테이너입니다. <fragment> 태그와 동일한 class, android:name 및 선택적 android:tag도 지원하지만 일반 FragmentTransaction을 사용하여 <fragment>에서 사용하는 맞춤 코드 경로 대신 이 초기 프래그먼트를 추가합니다.
  • onDestroyView() 타이밍: 프레임워크는 이제 onDestroyView()을 호출하기 전에 종료 애니메이션, 종료 프레임워크 전환 및 종료 AndroidX 전환(전환 1.3.0을 사용하는 경우)이 완료될 때까지 기다립니다.
  • 클래스 기반 add()replace(): FragmentTransactionadd()replace()의 새 오버로드가 추가되었습니다. 이러한 오버로드는 인수의 Class<? extends Fragment> 및 선택적 Bundle을 가져옵니다. 이러한 메서드에서는 FragmentFactory를 사용하여 추가할 프래그먼트의 인스턴스를 구성합니다. 또한 구체화된 유형(예: fragmentTransaction.replace<YourFragment>(R.id.container))을 사용하는 Kotlin 확장이 fragment-ktx에 추가되었습니다.
  • Lifecycle ViewModel SavedState 통합: by viewModels(), by activityViewModels(), ViewModelProvider 생성자 또는 ViewModelProviders.of()를 프래그먼트와 함께 사용할 때 SavedStateViewModelFactory가 이제 기본 팩토리로 사용됩니다.
  • 새로운 린트 검사: onCreateView(), onViewCreated() 또는 onActivityCreated()LiveData를 관찰할 때 getViewLifecycleOwner()를 사용하는지 확인하는 새로운 린트 검사가 추가되었습니다.
  • getFragmentManager() 지원 중단: getFragmentManager()requireFragmentManager() 메서드가 지원 중단되었으며 프래그먼트가 추가되는 null이 아닌 FragmentManager를 반환하는 단일 getParentFragmentManager() 메서드로 대체되었습니다(isAdded()를 사용하여 호출이 안전한지 확인할 수 있음).
  • FragmentManager.enableDebugLogging() 지원 중단: 정적 FragmentManager.enableDebugLogging 메서드가 지원 중단되었습니다. 이제 FragmentManager는 FragmentManager 태그에서 Log.isLoggable()을 준수합니다. 이에 따라 앱을 다시 컴파일하지 않고도 DEBUG 또는 VERBOSE 로깅을 사용 설정할 수 있습니다.

알려진 문제

  • FragmentContainerViewclass 또는 android:name 속성을 통해서만 참조되는 프래그먼트는 ProGuard에 의해 자동으로 유지되지 않으므로 각 프래그먼트 클래스의 Keep 규칙을 수동으로 추가해야 합니다. (b/142601969 참조)
  • class 또는 android:name을 사용하여 XML에 FragmentContainerView와 함께 NavHostFragment를 추가할 때 활동의 onCreate()findNavController()를 사용할 수 없습니다. (b/142847973 참조)

버전 1.2.0-rc05

2020년 1월 8일

androidx.fragment:fragment:1.2.0-rc05, androidx.fragment:fragment-ktx:1.2.0-rc05androidx.fragment:fragment-testing:1.2.0-rc05 버전이 출시되었습니다. 버전 1.2.0-rc05에 포함된 커밋을 확인하세요.

버그 수정

  • <fragment> 태그를 사용할 때 활동을 삭제하는 동안 onViewCreated()가 잘못 호출되는 프래그먼트 1.2.0-rc04의 회귀 문제가 수정되었습니다. (b/146290333 참조)
  • 이제 <fragment> 태그를 사용하여 추가된 프래그먼트가 일부 레이아웃(예: 가로 모드 레이아웃)에만 있는 경우에도 프래그먼트의 non-config가 제대로 삭제됩니다. 따라서 이러한 프래그먼트는 이제 레이아웃에 없는 경우에도 인스턴스화되는 대신 CREATED로 올바로 이동하지만 수명 주기 메서드를 통해서는 이동하지 않습니다. (b/145769287 참조)

버전 1.2.0-rc04

2019년 12월 18일

androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04androidx.fragment:fragment-testing:1.2.0-rc04 버전이 출시되었습니다. 버전 1.2.0-rc04에 포함된 커밋을 확인하세요.

버그 수정

  • 시각적 문제를 피할 수 있도록 TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, TRANSIT_FRAGMENT_FADE의 애니메이션이 조정되었습니다. (b/145468417 참조)

버전 1.2.0-rc03

2019년 12월 4일

androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03androidx.fragment:fragment-testing:1.2.0-rc03 버전이 출시되었습니다. 버전 1.2.0-rc03에 포함된 커밋을 확인하세요.

버그 수정

  • 종료 애니메이션/전환이 실행되는 동안 findFragmentById()/findFragmentByTag()에서 여전히 삭제된 프래그먼트를 반환하는 동작 변경사항이 수정되었습니다. (b/143982969aosp/1167585 참조)
  • 이제 포함된 활동이 onSaveInstanceState()를 호출할 때 하위 프래그먼트가 상위 프래그먼트 전에 올바로 중지됩니다. (b/144380645 참조)
  • 숨겨진 프래그먼트를 표시한 후 뷰가 INVISIBLE로 잘못 표시되는 문제가 해결되었습니다. (b/70793925 참조)
  • 프래그먼트 공유 요소 전환이 이제 회전 또는 크기가 조정된 뷰를 처리합니다. (b/142835261 참조)

문서 업데이트

  • setUserVisibleHint() 관련 지원 중단이 문서로 명확히 설명되었습니다. (b/143897055 참조)
  • FragmentFactory를 설정하면 하위 FragmentManagers에도 영향이 있다는 것을 더 잘 나타내도록 setFragmentFactory()getFragmentFactory()에 관한 문서가 개선되었습니다. (aosp/1170095 참조)

종속 항목 변경사항

  • 프래그먼트가 이제 Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState 1.0.0-rc03, Activity 1.1.0-rc03에 종속됩니다.

버전 1.2.0-rc02

2019년 11월 7일

androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02androidx.fragment:fragment-testing:1.2.0-rc02 버전이 출시되었습니다. 버전 1.2.0-rc02에는 이러한 커밋이 포함되어 있습니다.

버그 수정

  • Kotlin에서 onCreateView(), onViewCreated() 또는 onActivityCreated()(Fragment 1.2.0-rc01에 도입됨)의 LiveData를 관찰할 때 getViewLifecycleOwner()를 사용하기 위한 LintFix는 이제 getViewLifecycleOwner() 대신 Kotlin 속성 액세스 구문 viewLifecycleOwner를 사용합니다. aosp/1143821을 참조하세요.

버전 1.2.0-rc01

2019년 10월 23일

androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01androidx.fragment:fragment-testing:1.2.0-rc01 버전이 출시되었습니다. 버전 1.2.0-rc01에는 이러한 커밋이 포함되어 있습니다.

새로운 기능

  • FragmentContainerView는 이제 android:name 외에도 class 속성을 지원하며 <fragment> 태그의 기능을 미러링합니다. b/142722242를 참조하세요.
  • onCreateView(), onViewCreated() 또는 onActivityCreated()LiveData를 관찰할 때 getViewLifecycleOwner()를 사용하는지 확인하는 새로운 린트 검사가 추가되었습니다. b/137122478을 참조하세요.

버그 수정

  • 이제 DialogFragmentonDismissonCancel 콜백은 실행될 때 전달받은 DialogInterface가 null이 아니며 getDialog()가 null이 아닌 값을 반환한다는 것을 보장합니다. b/141974033을 참조하세요.
  • 이제 FragmentContainerViewclass 또는 android:name으로 정의된 프래그먼트를 확장의 일부로 추가하여 이후에 findFragmentById()findFragmentByTag()가 즉시 작동하도록 합니다. b/142520327을 참조하세요.
  • 저장 중인 상태로 인한 FragmentContainerViewIllegalStateException이 수정되었습니다. b/142580713을 참조하세요.
  • FragmentContainerView 클래스가 난독화될 때 FragmentContainerViewUnsupportedOperationException이 수정되었습니다. b/142657034를 참조하세요.

알려진 문제

  • FragmentContainerViewclass 또는 android:name 속성을 통해서만 참조되는 프래그먼트는 ProGuard에 의해 자동으로 유지되지 않으므로 각 프래그먼트 클래스의 Keep 규칙을 수동으로 추가해야 합니다. 이 문제가 aapt2를 통해 수정될 때까지 FragmentContainerView로 이동하도록 제안하는 린트 규칙을 사용 중지했습니다. b/142601969를 참조하세요.

버전 1.2.0-beta02

2019년 10월 11일

androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02androidx.fragment:fragment-testing:1.2.0-beta02 버전이 출시되었습니다. 버전 1.2.0-beta02에는 이러한 커밋이 포함되어 있습니다.

버그 수정

  • NavHostFragment와 같은 문제 해결 사례에서 알 수 있듯이 프래그먼트의 onInflate()FragmentContainerView에서 적절한 속성을 받지 못하는 문제가 수정되었습니다. b/142421837을 참조하세요.

버전 1.2.0-beta01

2019년 10월 9일

androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01androidx.fragment:fragment-testing:1.2.0-beta01 버전이 출시되었습니다. 버전 1.2.0-beta01에는 이러한 커밋이 포함되어 있습니다.

새로운 기능

  • FragmentContainerView에서는 android:name 및 선택적 android:tag XML 속성 지원의 추가를 통해 초기 프래그먼트 추가를 위한 지원이 추가되었습니다. <fragment> 태그와 달리 FragmentContainerView는 이면에서 내부적으로 일반 FragmentTransaction을 사용하여 초기 프래그먼트를 추가하므로 FragmentContainerViewFragmentTransaction 작업을 추가로 실행하고 레이아웃에 뷰 결합을 사용할 수 있습니다. b/139830628b/141177981을 참조하세요.
  • 이제 프래그먼트에는 <fragment>FragmentContainerView로 바꾸도록 빠른 수정을 제공하는 린트 경고가 포함됩니다. b/139830056을 참조하세요.

버그 수정

  • androidx.transition을 사용할 때 ClassCastException이 수정되었습니다. b/140680619를 참조하세요.
  • Transition 1.3.0-beta01을 사용할 때 프래그먼트는 이제 onDestroyView()를 전달하기 전에 androidx.transition 전환(Fragment 1.2.0-alpha03Fragment 1.2.0-alpha02에서 각각 수정된 프레임워크 전환 및 애니메이션 외에도)이 완료될 때까지 기다립니다. aosp/1119841을 참조하세요.
  • Transition 1.3.0-beta01을 사용할 때 프래그먼트는 이제 동일한 컨테이너에서 새로운 전환/애니메이션을 시작하기 전에 androidx.transition 전환을 적절하게 취소합니다. aosp/1119841을 참조하세요.
  • API 17 이하에서 FragmentContainerView 사용 시 프래그먼트의 루트 뷰에서 androidx.transition 전환을 사용할 때 발생하는 문제가 수정되었습니다. b/140361893을 참조하세요.
  • fragment-testing 아티팩트는 이제 AndroidX 테스트 1.2.0에 종속되므로 최신 Espresso 3.2.0과 호환되지 않는 문제가 수정되었습니다. b/139100149를 참조하세요.
  • FragmentManager의 Log.w 사용이 삭제되었습니다. aosp/1126468을 참조하세요.

알려진 문제

  • NavHostFragment와 같은 문제 해결 사례에서 알 수 있듯이 프래그먼트의 onInflate()FragmentContainerView에서 적절한 속성을 받지 못합니다. b/142421837을 참조하세요.

버전 1.2.0-alpha04

2019년 9월 18일

androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04androidx.fragment:fragment-testing:1.2.0-alpha04 버전이 출시되었습니다. 버전 1.2.0-alpha04에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • FragmentgetFragmentManager()requireFragmentManager() 메서드가 지원 중단되었으며 프래그먼트가 추가되는 null이 아닌 FragmentManager를 반환하는 단일 getParentFragmentManager() 메서드로 대체되었습니다(isAdded()를 사용하여 호출이 안전한지 확인할 수 있음). b/140574496을 참조하세요.
  • 정적 FragmentManager.enableDebugLogging 메서드가 지원 중단되었습니다. 이제 FragmentManager는 FragmentManager 태그에서 Log.isLoggable()을 준수합니다. 이에 따라 앱을 다시 컴파일하지 않고도 DEBUG 또는 VERBOSE 로깅을 사용 설정할 수 있습니다. aosp/1116591을 참조하세요.

버그 수정

  • 이제 다른 프래그먼트의 이탈 애니메이션이 실행되는 동안 프래그먼트가 적절하게 제거됩니다. b/140574199를 참조하세요.
  • 프래그먼트가 이전에 호출하지 않았던 Activity.findViewById()를 호출하는 문제가 수정되었습니다. aosp/1116431을 참조하세요.

버전 1.2.0-alpha03

2019년 9월 5일

androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03androidx.fragment:fragment-testing:1.2.0-alpha03 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

API 변경사항

  • FragmentContainerView는 이제 final입니다. b/140133091을 참조하세요.

버그 수정

  • 이제 FragmentContainerView는 백 스택에서 프래그먼트를 삭제할 때 그리기 순서를 올바르게 반대로 바꿉니다. b/139104187을 참조하세요.
  • 프래그먼트를 표시하는 동시에 새 프래그먼트를 추가할 때 잘못된 애니메이션이 실행되는 문제가 수정되었습니다. b/111659726을 참조하세요.
  • 프래그먼트는 이제 onDestroyView()를 전달하기 전에 전환(Fragment 1.2.0-alpha02에서 수정된 애니메이션 외에도)이 완료될 때까지 기다립니다. b/138741697을 참조하세요.

버전 1.2.0-alpha02

2019년 8월 7일

androidx.fragment:fragment:1.2.0-alpha02, androidx.fragment:fragment-ktx:1.2.0-alpha02androidx.fragment:fragment-testing:11.2.0-alpha02 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

새로운 기능

  • 이제 SavedStateViewModelFactoryby viewModels(), by activityViewModels(), ViewModelProvider 생성자 또는 ViewModelProviders.of()Fragment와 함께 사용할 때 사용되는 공장 기본값입니다. b/135716331을 참조하세요.
  • FragmentTransactionsetTransition과 함께 TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, TRANSIT_FRAGMENT_FADE를 사용할 때의 기본 애니메이션이 Android 10 기기의 활동에서 사용하는 애니메이션과 일치하도록 업데이트되었습니다. aosp/1012812aosp/1014730을 참조하세요.

API 변경사항

  • FrameLayout 사용을 대체하여 동적으로 추가된 프래그먼트에 강력히 권장되는 컨테이너로 FragmentContainerView를 도입함으로써 애니메이션 z-순서 문제와 프래그먼트로의 창 인셋 전달 문제가 수정되었습니다. b/37036000, aosp/985243b/136494650을 참조하세요.
  • 프래그먼트에 의해 확장되는 뷰에서 포함 프래그먼트를 검색하는 정적 FragmentManager.findFragment(View) 메서드가 추가되었습니다. 또한 Kotlin 확장은 fragment-ktx에서도 사용할 수 있습니다. aosp/1090757을 참조하세요.
  • FragmentTransactionadd()replace()의 새 오버로드가 추가되었습니다. 이러한 오버로드는 인수의 Class<? extends Fragment> 및 선택적 Bundle을 가져옵니다. 이러한 메서드에서는 FragmentFactory를 사용하여 추가할 프래그먼트의 인스턴스를 구성합니다. 또한 구체화된 유형(예: fragmentTransaction.replace<YourFragment>(R.id.container))을 사용하는 Kotlin 확장이 fragment-ktx에 추가되었습니다. b/126124987을 참조하세요.
  • @MainThread 주석이 Fragment 수명 주기 콜백에 추가되었습니다. b/127272564를 참조하세요.
  • FragmentTransactionFragmentManager.BackStackEntry의 탐색경로 제목 관련 API가 지원 중단되었습니다. b/138252944를 참조하세요.
  • FragmentTransactionsetTransitionStyle 메서드가 지원 중단되었습니다. aosp/1011537을 참조하세요.
  • FragmentManager의 많은 메서드가 더 이상 abstract가 아닙니다. FragmentManager 자체는 여전히 abstract이므로 직접 인스턴스화하거나 확장해서는 안 됩니다. 계속해서 getSupportFragmentManager(), getChildFragmentManager() 등에서 기존 인스턴스만 가져와야 합니다.

버그 수정

  • Fragment 1.1.0-rc04에서: 프래그먼트는 이제 프래그먼트에서 표시했던 연기된 전환을 올바르게 취소합니다. b/138251858을 참조하세요.
  • Fragment 1.1.0-rc03에서: 시간 초과로 postponeEnterTransition()을 두 번 이상 호출해도 이전 시간 초과가 취소되지 않는 문제가 수정되었습니다. b/137797118을 참조하세요.
  • Fragment 1.1.0-rc02에서: 현재 항목을 삭제할 때 FragmentPagerAdapterFragmentStatePagerAdapter에서 발생하는 비정상 종료 문제가 수정되었습니다. b/137209870을 참조하세요.
  • 이제 프래그먼트는 onDestroyView()를 전달하기 전에 애니메이션이 완료될 때까지 기다립니다. b/136110528을 참조하세요.
  • 이제 상위 프래그먼트를 애니메이션 처리할 때 하위 프래그먼트와 종속 항목의 프래그먼트 애니메이션이 올바르게 처리됩니다. b/116675313을 참조하세요.
  • 공유 요소 전환을 사용하고 팝업과 추가 작업을 결합할 때의 NullPointerException이 수정되었습니다. b/120507394를 참조하세요.
  • Robolectric 테스트에서 FragmentPagerAdapterFragmentStatePagerAdapter를 사용할 때 IllegalStateException 관련 해결 방법이 추가되었습니다. b/137201343을 참조하세요.

버전 1.2.0-alpha01

2019년 7월 2일

androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01androidx.fragment:fragment-testing:1.2.0-alpha01 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

새로운 기능

  • 이제 FragmentManager는 프래그먼트의 뷰를 연결한 후 onViewCreated()를 호출하기 직전에 requestApplyInsets()를 호출하므로 뷰에 항상 올바른 인셋이 사용됩니다. b/135945162를 참조하세요.

버그 수정

  • replace() 전에 setPrimaryNavigationFragment()를 사용한 FragmentTransaction을 표시할 때 발생하는 NullPointerException이 수정되었습니다. b/134673465를 참조하세요.

버전 1.1.0

버전 1.1.0

2019년 9월 5일

androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0androidx.fragment:fragment-testing:1.1.0 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

1.0.0 이후 중요 변경사항

  • fragment-testing: fragment-testing 아티팩트는 프래그먼트를 개별적으로 테스트하기 위한 FragmentScenario 클래스를 제공합니다. 자세한 내용은 앱 프래그먼트 테스트 문서를 참조하세요.
  • FragmentFactory: 이제 FragmentManager에서 FragmentFactory를 설정하여 프래그먼트 인스턴스 생성을 관리하고 인수가 없는 생성자를 보유해야 하는 엄격한 요구사항을 삭제할 수 있습니다.
  • ViewModel의 Kotlin 속성 위임: 이제 fragment-ktx 아티팩트에는 2개의 Kotlin 속성 위임, 즉 개별 프래그먼트와 연결된 ViewModel에 액세스하기 위한 by viewModels() 및 활동으로 범위가 지정된 ViewModel에 액세스하기 위한 by activityViewModels()가 포함되어 있습니다.
  • 최대 수명 주기: 이제 FragmentTransactionsetMaxLifecycle()을 호출하여 프래그먼트의 최대 수명 주기 상태를 설정할 수 있습니다. 이 함수가 이제 지원 중단된 setUserVisibleHint()를 대체합니다. FragmentPagerAdapterFragmentStatePagerAdapter에는 새 생성자가 있습니다. 이 생성자를 통해 새로운 동작으로 전환할 수 있습니다.
  • FragmentActivity LayoutId 생성자: 이제 FragmentActivity의 서브클래스는 R.layout ID를 사용하는 FragmentActivity의 생성자를 선택적으로 호출할 수 있으며 이 동작은 onCreate()setContentView()를 호출하는 대신 콘텐츠 뷰로 설정해야 하는 레이아웃을 나타냅니다. 그렇지만 서브클래스에 인수가 없는 생성자가 있어야 한다는 요구사항은 변경되지 않습니다.
  • Fragment LayoutId 생성자: 이제 Fragment의 서브클래스는 R.layout ID를 사용하는 Fragment의 생성자를 선택적으로 호출할 수 있으며 이 동작은 onCreateView()를 재정의하는 대신 이 프래그먼트에 사용해야 하는 레이아웃을 나타냅니다. 확장된 레이아웃은 onViewCreated()에서 구성할 수 있습니다.
  • 시간 초과로 연기: 제한 시간을 사용하는 postponeEnterTransition()의 새 오버로드가 추가되었습니다.

버전 1.1.0-rc04

2019년 8월 7일

androidx.fragment:fragment:1.1.0-rc04, androidx.fragment:fragment-ktx:1.1.0-rc04androidx.fragment:fragment-testing:1.1.0-rc04 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

버그 수정

  • 프래그먼트는 이제 프래그먼트에서 표시했던 연기된 전환을 올바르게 취소합니다. b/138251858을 참조하세요.

버전 1.1.0-rc03

2019년 7월 19일

androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03androidx.fragment:fragment-testing:1.1.0-rc03 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

버그 수정

  • 시간 초과로 postponeEnterTransition()을 두 번 이상 호출해도 이전 시간 초과가 취소되지 않는 문제가 수정되었습니다. b/137797118을 참조하세요.

버전 1.1.0-rc02

2019년 7월 17일

androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02androidx.fragment-testing:fragment:1.1.0-rc02 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

버그 수정

  • 현재 항목을 삭제할 때 FragmentPagerAdapterFragmentStatePagerAdapter에서 발생하는 비정상 종료 문제가 수정되었습니다. b/137209870을 참조하세요.

버전 1.1.0-rc01

2019년 7월 2일

androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01androidx.fragment:fragment-testing:1.1.0-rc01 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

버그 수정

  • 이제 프래그먼트는 전환이 실행되는 동안 show() 또는 hide() 작업을 사용할 때 공개 상태를 적절하게 업데이트합니다. b/133385058을 참조하세요.
  • replace() 전에 setPrimaryNavigationFragment()를 사용한 FragmentTransaction을 표시할 때 발생하는 NullPointerException이 수정되었습니다. b/134673465를 참조하세요.

버전 1.1.0-beta01

2019년 6월 5일

androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01androidx.fragment:fragment-testing:1.1.0-beta01 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

버그 수정

  • 이제 중첩된 프래그먼트의 androidx.lifecycle.Lifecycle 콜백(특히 STARTED, RESUMED, PAUSED, STOPPEDDESTROYED 관련)이 적절하게 중첩됩니다. b/133497591을 참조하세요.
  • 프래그먼트의 onCreate()에 등록된 OnBackPressedCallback 인스턴스가 이제 하위 FragmentManager보다 적절하게 우선시됩니다. b/133175997을 참조하세요.
  • 상위 프래그먼트가 교체되고 있을 때 하위 프래그먼트는 더 이상 애니메이션 처리되지 않습니다. b/121017790을 참조하세요.
  • 이제 animateLayoutChanges="true" 사용 시 프래그먼트 애니메이션 및 전환이 무시되며 프래그먼트가 적절하게 제거되지 않던 문제가 수정되었습니다. b/116257087을 참조하세요.

버전 1.1.0-alpha09

2019년 5월 16일

androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09androidx.fragment:fragment-testing:1.1.0-alpha09 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

API 변경사항

  • 이제 기본 탐색 프래그먼트가 변경될 때 프래그먼트가 새 onPrimaryNavigationFragmentChanged(boolean) 메서드에 관한 콜백을 수신합니다. aosp/960857을 참조하세요.

버그 수정

  • 이제 상위 프래그먼트가 삭제될 때 하위 프래그먼트에 의해 확장된 메뉴 항목이 올바르게 삭제됩니다. (b/131581013을 참조하세요.

버전 1.1.0-alpha08

2019년 5월 7일

androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08androidx.fragment:fragment-testing:1.1.0-alpha08 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

이 출시는 1.1.0-alpha01 ~ 1.1.0-alpha04 환경설정과 호환되지 않습니다. 이 버전의 프래그먼트를 사용할 경우 1.1.0-alpha05 환경설정으로 업그레이드하세요.

새로운 기능

  • 제한 시간이 경과한 후 프래그먼트가 startPostponedEnterTransition()을 자동으로 호출하는 postponeEnterTransition()의 새 오버로드가 추가되었습니다. b/120803208을 참조하세요.

API 변경사항

  • 브레이킹 체인지: Bundle을 가져오는 FragmentFactory instantiate 메서드(이전에 지원 중단됨)가 삭제되었습니다. aosp/953856을 참조하세요.
  • 브레이킹 체인지: FragmentPagerAdapterFragmentStatePagerAdapter에서 RESUME_ONLY_CURRENT_FRAGMENTUSE_SET_USER_VISIBLE_HINT 상수의 이름이 각각 BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENTBEHAVIOR_SET_USER_VISIBLE_HINT전에. aosp/954782를 참조하세요.

버그 수정

  • setMaxLifecycle()을 통해 수명 주기를 제한한 프래그먼트가 최종 상태에 도달하기 전에 더 이상 다시 시작되지 않습니다. b/131557151을 참조하세요.
  • setMaxLifecycle(Lifecycle.State.CREATED) 사용 시 프래그먼트에서 뷰가 제대로 제거됩니다. aosp/954180을 참조하세요.

버전 1.1.0-alpha07

2019년 4월 25일

androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07androidx.fragment:fragment-testing:1.1.0-alpha07 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

새로운 기능

  • 이제 FragmentTransactionsetMaxLifecycle()을 호출하여 프래그먼트의 최대 수명 주기 상태를 설정할 수 있습니다. 이 함수가 이제 지원 중단된 setUserVisibleHint()를 대체합니다. FragmentPagerAdapterFragmentStatePagerAdapter에는 새 생성자가 있습니다. 이 생성자를 통해 새로운 동작으로 전환할 수 있습니다. b/129780800을 참조하세요.

API 변경사항

  • FragmentScenariomoveToState(STARTED)는 이제 API 24+ 기기에서만 호출할 수 있습니다. b/129880016을 참조하세요.

동작 변경사항

  • (b/129907905)의 결과로 백 스택의 프래그먼트는 호스팅 활동이 다시 생성될 때 onCreateView()에 관한 콜백을 가져오지 않습니다. 이제 프로그래먼트가 표시 상태가 될 때만(즉, 백 스택이 표시될 때만) onCreateView()가 호출됩니다.

버그 수정

  • XML의 <fragment> 태그와 FragmentActivity 또는 AppCompatActivitycontentLayoutId 생성자를 사용할 때 발생하는 문제가 수정되었습니다. b/129907905를 참조하세요.
  • 구성이 변경된 이후에 백 스택의 프래그먼트가 최소한 CREATED로 이동하지 않아 ViewModel 및 보관된 하위 프래그먼트가 제대로 처리되지 않던 문제가 수정되었습니다. b/129593351을 참조하세요.
  • 인스턴스 상태가 저장된 이후에 보관된 프래그먼트의 비동기화로 인해 발생하는 restoreSaveState의 비정상 종료가 수정되었습니다. b/130433793, aosp/947824를 참조하세요.
  • FragmentManager에 백 스택이 있을 때 프래그먼트 수명 주기와 함께 추가된 OnBackPressedCallback이 호출되지 않던 문제가 수정되었습니다. 자세한 내용은 androidx.activity 1.0.0-alpha07을 참조하세요. aosp/948209를 참조하세요.
  • 프래그먼트가 애니메이션에 LAYER_TYPE_HARDWARE를 더 이상 적용하지 않으므로 특별히 하드웨어 레이어 애니메이션이 필요하다면 애니메이션의 일부로 설정하세요. b/129486478을 참조하세요.

버전 1.1.0-alpha06

2019년 4월 3일

androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06androidx.fragment:fragment-testing:1.1.0-alpha06 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

새로운 기능

  • FragmentManager에 의해 발생되는 예외 메시지에 이제 프래그먼트의 이름이 포함됩니다. b/67759402를 참조하세요.

API 변경사항

  • 이제 FragmentFragmentActivity에는 @LayoutRes int를 사용하는 두 번째 생성자가 포함되어 있으며 이 생성자가 @ContentView로 클래스에 주석을 다는 이전 동작을 대체합니다. 이 접근법은 앱과 라이브러리 모듈 모두에서 적용됩니다. b/128352521을 참조하세요.
  • 이제 FragmentActivity의 onActivityResult()@CallSuper로 제대로 표시됩니다. b/127971684를 참조하세요.
  • Bundle 인수를 사용하는 FragmentFactory의 instantiate 메서드가 지원 중단되었으므로 앱은 Bundle을 사용하지 않는 새 instantiate 오버로드를 사용해야 합니다. b/128836103을 참조하세요.
  • FragmentScenario 메서드는 이제 @StyleRes로 제대로 주석이 달립니다. aosp/924193을 참조하세요.
  • FragmentTabHost가 지원 중단되었습니다. b/127971835를 참조하세요.
  • FragmentActivity의 getThemedContext()가 삭제되었습니다. aosp/934078을 참조하세요.

버그 수정

  • 새로 추가되는 프래그먼트가 화면에서 깜박이던 1.1.0-alpha05의 회귀 문제가 수정되었습니다. b/129405432를 참조하세요.
  • 일련의 popBackStack+replace+popBackStack 작업 이후 기본 탐색 프래그먼트가 손실되던 문제가 수정되었습니다. b/124332597을 참조하세요.
  • 프래그먼트 상태 복원 시 활동에서 @ContentView 생성자를 사용할 때 발생하던 문제가 수정되었습니다. b/127313094를 참조하세요.
  • 아직 FragmentManager에 연결되지 않은 프래그먼트로 기존 타겟 프래그먼트를 대체할 때의 setTargetFragment() 로직이 수정되었습니다. aosp/932156을 참조하세요.

버전 1.1.0-alpha05

2019년 3월 13일

androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05androidx.fragment:fragment-testing:1.1.0-alpha05 버전이 출시되었습니다. 이 버전에 포함된 커밋의 전체 목록은 여기에서 확인할 수 있습니다.

새로운 기능

  • 이제 @ContentView 주석 조회가 캐시됩니다. b/123709449를 참조하세요.

동작 변경사항

  • 이제 다른 FragmentManager에 연결된 프래그먼트를 사용하여 remove(), hide(), show(), detach()setPrimaryNavigationFragment()를 호출하면 자동으로 실패하지 않고 IllegalStateException이 발생합니다. aosp/904301을 참조하세요.

버그 수정

  • 이제 FragmentActivityonNewIntent@CallSuper로 올바르게 표시됩니다. b/124120586을 참조하세요.
  • getDialog().dismiss() 또는 getDialog().cancel()을 사용할 때 DialogFragmentonDismiss()가 두 번 호출될 수 있는 문제가 수정되었습니다. b/126563750을 참조하세요.

버전 1.1.0-alpha04

2019년 2월 7일

androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04androidx.fragment:fragment-testing 1.1.0-alpha04 버전이 출시되었습니다.

새로운 기능

  • 확장되어야 하는 레이아웃 XML 파일을 나타낼 수 있는 @ContentView 클래스 주석 지원이 onCreateView() 재정의의 대안으로 추가되었습니다. onViewCreated()에서 관련 작업을 살펴보는 것이 좋습니다. aosp/837619를 참조하세요.
  • 이제 fragment-testingandroidx.test:core-ktx 1.1.0 안정화 버전에 종속됩니다. b/121209673을 참조하세요.
  • 이제 FragmentScenario와 함께 openActionBarOverflowOrOptionsMenu를 사용하여 프래그먼트 호스팅 옵션 메뉴를 테스트할 수 있습니다. b/121126668을 참조하세요.

API 변경사항

  • @NonNull Bundle을 반환하거나 IllegalStateException을 발생시키는 requireArguments() 메서드가 추가되었습니다. b/121196360을 참조하세요.
  • getLifecycle(), getViewLifecycleOwner()getViewLifecycleOwnerLiveData()는 재정의되어서는 안 되며 향후 릴리스에서 완료될 예정이라는 메모가 추가되었습니다. 현재 이 메서드를 재정의하려면 기능 요청을 제출하세요. aosp/880714를 참조하세요.
  • getViewModelStore()는 재정의되어서는 안 되며 향후 릴리스에서 완료될 예정이라는 메모가 추가되었습니다. 현재 이 메서드를 재정의하려면 기능 요청을 제출하세요. aosp/880713을 참조하세요.
  • 이전 프래그먼트 버전과의 바이너리 호환성 문제가 수정되었습니다. aosp/887877aosp/889834를 참조하세요.

버그 수정

  • nullsetTargetFragment()에 전달할 때 타겟 프래그먼트가 올바르게 삭제됩니다. aosp/849969를 참조하세요.
  • onDestroy() 시 또는 그 이후에 타겟 프래그먼트를 때로 사용할 수 없던 문제가 수정되었습니다. b/122312935를 참조하세요.
  • 이제 DialogFragment의 onDismiss()가 onDestroy() 전에 호출됩니다. aosp/874133aosp/890734를 참조하세요.

버전 1.1.0-alpha03

2018년 12월 17일

새로운 기능

  • 프래그먼트는 이제 BundleSavedStateRegistryOwner를 구현하고 새로 출시된 SavedState 라이브러리에 종속됩니다. aosp/824380을 참조하세요.
  • 포함 활동과 연결된 ViewModel을 검색하도록 by activityViewModels Kotlin 속성 위임이 추가되었습니다. b/119050253을 참조하세요.
  • ViewModelStoreOwner를 가져오는 선택적 람다 메서드를 사용하도록 by viewModels Kotlin 속성 위임이 확장되었습니다. 이러한 확장을 통해 val viewModel: MyViewModel by viewModels(::requireParentFragment)와 같은 코드를 사용하여 상위 프래그먼트 또는 다른 맞춤 ViewModelStoreOwner를 전달할 수 있습니다. b/119050253을 참조하세요.

API 변경사항

  • 이제 FragmentScenario를 통해 Theme.AppCompat과 같은 테마를 지정할 수 있습니다. b/119054431을 참조하세요. 브레이킹 체인지입니다.
  • @NonNull View를 반환하거나 IllegalStateException을 발생시키는 requireView() 메서드가 추가되었습니다. b/120241368을 참조하세요.
  • @NonNull Fragment를 반환하거나 IllegalStateException을 발생시키는 requireParentFragment() 메서드가 추가되었습니다. b/112103783을 참조하세요.

버그 수정

  • IllegalStateException, 즉 상태 저장 실패가 수정되었습니다. b/120814739를 참조하세요.
  • 이제 저장된 인스턴스 상태에서 복원 중인 프래그먼트는 항상 null이 아닌 Bundle을 수신합니다. b/119794496을 참조하세요.
  • 삭제된 프래그먼트가 더 이상 Lifecycle 객체를 재사용하지 않습니다(다시 추가되어도). b/118880674를 참조하세요.

버전 1.1.0-alpha02

2018년 12월 3일

새로운 기능

  • 이제 FragmentScenario의 Kotlin 확장을 사용하면 FragmentFactory 인스턴스를 전달하는 대신 프래그먼트 생성에 람다를 사용할 수 있습니다. aosp/812913을 참조하세요.

버그 수정

  • 백 스택에서 중첩된 프래그먼트를 사용할 때 발생하는 IllegalStateException이 수정되었습니다. b/119256498을 참조하세요.
  • FragmentFactory와 함께 FragmentScenario.recreate()를 사용할 때의 비정상 종료가 수정되었습니다. aosp/820540을 참조하세요.
  • 프래그먼트를 삭제한 이후에 타겟 프래그먼트에 액세스할 수 없던 문제가 수정되었습니다. aosp/807634를 참조하세요.

버전 1.1.0-alpha01

2018년 11월 5일

이 버전은 androidx.test:core API를 기반으로 빌드되는 FragmentScenariofragment-testing 아티팩트의 최초 출시입니다. 자세한 내용은 프래그먼트 테스트 문서를 참조하세요.

새로운 기능

  • 프래그먼트를 독립적으로 테스트하기 위한 새 FragmentScenario 클래스
  • 이제 FragmentManager에서 FragmentFactory를 설정하여 새 프래그먼트 인스턴스를 인스턴스화하는 방법을 제어할 수 있습니다.
  • 프래그먼트에서 ViewModel을 검색하기 위한 새로운 by viewModels() Kotlin 속성 대리자가 추가되었습니다.
  • 대기 중인 입력 이벤트(예: 클릭)가 이제 프래그먼트의 onStop()에서 취소됩니다.

API 변경사항

  • 프래그먼트 API 노출 영역에서 null 허용 여부 주석을 크게 확장했습니다.

버그 수정

  • LiveData 내에서 프래그먼트 작업이 실패하는 문제를 수정했습니다. (b/77944637 참조)

알려진 문제

  • 프래그먼트가 FragmentManager에서 삭제된 후에는 타겟 프래그먼트에 액세스할 수 없습니다.
  • fragment-testing은 정확한 androidx.test:core:1.0.0 대신 androidx.test:core:1.0.0-beta01에 종속됩니다.