Fragment
| 최근 업데이트 | 안정화 버전 | 출시 후보 버전 | 베타 버전 | 알파 버전 |
|---|---|---|---|---|
| 2025년 8월 13일 | 1.8.9 | - | - | - |
종속 항목 선언
Fragment의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용을 알아보려면 Google Maven 저장소를 읽어보세요.
다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.
Groovy
dependencies { def fragment_version = "1.8.9" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.9" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.
의견
제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.
자세한 내용은 Issue Tracker 문서를 참고하세요.
버전 1.8
버전 1.8.9
2025년 8월 13일
androidx.fragment:fragment-*:1.8.9이 출시되었습니다. 버전 1.8.9에는 이러한 커밋이 포함되어 있습니다.
버그 수정
- 숨기기 작업을 팝하는 뒤로 탐색 예측 동작을 취소하면 애니메이터를 사용할 때 후속 동작이 올바르게 애니메이션되지 않는 문제가 수정되었습니다. (I0a400, b/384765586)
setMaxLifecycle와popBackStack의 조합으로 인해 상단 프래그먼트가 RESUMED로 이동하지 못하는 오류가 수정되었습니다. (I3448b, b/406127576)
버전 1.8.8
2025년 6월 4일
androidx.fragment:fragment-*:1.8.8이 출시되었습니다. 버전 1.8.8에는 이러한 커밋이 포함되어 있습니다.
버그 수정
setMaxLifecycle(Lifecycle.State.INITIALIZED)로 추가된 프래그먼트의 상태를 저장하려고 할 때FragmentManager가 비정상 종료되는 문제를 수정했습니다. 이러한 프래그먼트는onCreate()를 거치지 않았으므로 더 이상 저장된 상태가 없거나onSaveInstanceState()가 호출되지 않습니다. (I6e37a)
버전 1.8.7
2025년 5월 20일
androidx.fragment:fragment-*:1.8.7이 출시되었습니다. 버전 1.8.7에는 이 커밋이 포함되어 있습니다.
버그 수정
- 동일한 프레임에서 팝 및 바꾸기 작업 후
FragmentManager가 올바른 상태가 아닌 문제로 인해popBackStack또는 예측 뒤로 탐색 동작을 통해 백 스택을 팝할 때 비정상 종료가 발생할 수 있는 문제가 수정되었습니다. (I50ad1) - AndroidX 전환을 사용하고 시작되지 않은 전환을 취소하려고 하는 연속된 빠른 프래그먼트 트랜잭션이 발생할 때 AndroidX 전환 라이브러리가 전환 상태를 올바르게 삭제하지 않아 발생하는 비정상 종료가 수정되었습니다. (b/414612221 참고) (Ib5235)
버전 1.8.6
2025년 2월 12일
androidx.fragment:fragment-*:1.8.6이 출시되었습니다. 버전 1.8.6에는 이러한 커밋이 포함되어 있습니다.
버그 수정
- 이제
FragmentContainerView의setOnApplyWindowInsetsListener재정의가 프레임워크에서 허용하는 것과 일치하는 null 리스너를 사용합니다. (I575f0, b/282790626)
버전 1.8.5
2024년 10월 30일
androidx.fragment:fragment-*:1.8.5이 출시되었습니다. 버전 1.8.5에는 이러한 커밋이 포함되어 있습니다.
버그 수정
- 뒤로 탐색 예측 동작이 취소되거나 중단된 후에만
saveBackStack에 의해 트리거되는IllegalStateException가 수정되었습니다. (I3387d, b/342419080)
버전 1.8.4
2024년 10월 2일
androidx.fragment:fragment-*:1.8.4이 출시되었습니다. 버전 1.8.4에는 이 커밋이 포함되어 있습니다.
버그 수정
- Androidx 전환을 사용할 때 시스템 뒤로 버튼을 빠르게 누르거나 뒤로 동작을 빠르게 실행하면 Fragment가 비정상 종료되는 문제가 수정되었습니다. (Ibc038, b/364804225)
- 프래그먼트에서 뒤로 탐색 예측 동작을 중단하면 프래그먼트 관리자가 정의되지 않은 상태로 전송되어 잘못된 프래그먼트가 표시되는 문제가 수정되었습니다. (If82e2, b/338624457)
AndroidFragment인스턴스에서 사용하는 클래스를 동적으로 교체할 때AndroidFragment의UninitializedPropertyAccessException이 수정되었습니다. (I12dea)
버전 1.8.3
2024년 9월 4일
androidx.fragment:fragment-*:1.8.3이 출시되었습니다. 버전 1.8.3에는 이러한 커밋이 포함되어 있습니다.
버그 수정
- 이제
FragmentManager는 뒤로 탐색 예측 동작을 처리할 때 대기 중인 작업을 올바르게 고려합니다. 이렇게 하면 시스템 뒤로 버튼을 눌러도 더 이상IndexOutOfBoundsException가 발생하지 않습니다. (I9ba32, b/342316801) - 포함된 활동/프래그먼트의 상태가 이미 저장된 동안 컴포지션에 추가된 경우
AndroidFragment이 더 이상 비정상 종료되지 않습니다. (I985e9, b/356643968)
버전 1.8.2
2024년 7월 24일
androidx.fragment:fragment-*:1.8.2이 출시되었습니다. 버전 1.8.2에는 이러한 커밋이 포함되어 있습니다.
버그 수정
- 이제
AndroidFragment가 상위 프래그먼트가 프래그먼트 백 스택에 배치되는 경우를 적절하게 처리하여 해당 프래그먼트로 다시 이동할 때 발생하는 'ID의 뷰를 찾을 수 없음' 문제를 방지합니다. (I94608) - 이제
ViewGroup를 사용하는FragmentTransaction.add메서드를 통해 추가된 프래그먼트는onContainerAvailable를 기다린 후onStart()로 진행합니다. 이는 이제AndroidFragment을 통해 이동하기 전에AndroidFragment이 컴포지션에 다시 진입할 때까지 기다리는AndroidFragment과 같은 해당 API의 사용자에게 영향을 미칩니다.onStart()(I94608)
버전 1.8.1
2024년 6월 26일
androidx.fragment:fragment-*:1.8.1이 출시되었습니다. 버전 1.8.1에는 이 커밋이 포함되어 있습니다.
버그 수정
- 컨테이너가 없는 프래그먼트가 예측 뒤로 탐색 동작을 시작할 때 즉시
DESTROYED되는 문제가 수정되었습니다. 이제 동작이 완료될 때까지CREATED상태로 유지됩니다. (If6b83, b/345244539)
버전 1.8.0
2024년 6월 12일
androidx.fragment:fragment-*:1.8.0이 출시되었습니다. 버전 1.8.0에는 이러한 커밋이 포함되어 있습니다.
1.7.0 이후 중요 변경사항
- 이제
fragment-compose아티팩트에는 프래그먼트 클래스 이름을 통해 Compose 계층 구조에 프래그먼트를 추가할 수 있는AndroidFragmentComposable가 포함되어 있습니다. 프래그먼트의 상태 저장 및 복원을 자동으로 처리합니다. 이 방법은 이전에 권장되었던AndroidViewBinding를 사용하여 프래그먼트를 인플레이션하는 방법을 직접 대체하는 데 사용해야 합니다. - 이제
FragmentManager의OnBackStackChangedListener인터페이스에 있는onBackStackChangeCancelled콜백이FragmentManager에서 작업을 실행하는 과정에서 발생하므로onBackStackChangeCommitted콜백의 타이밍과 더 가까워집니다.
버전 1.8.0-rc01
2024년 5월 29일
androidx.fragment:fragment-*:1.8.0-rc01이 출시되었습니다. 버전 1.8.0-rc01에는 이 커밋이 포함되어 있습니다.
버그 수정
- 이제
FragmentManagers OnBackStackChangedListener인터페이스의onBackStackChangeCancelled콜백이FragmentManager에서 작업을 실행하는 과정에서 트리거되어onBackStackChangeCommitted콜백의 타이밍과 더 가까워집니다. (I5ebfb, b/332916112)
버전 1.8.0-beta01
2024년 5월 14일
androidx.fragment:fragment-*:1.8.0-beta01이 출시되었습니다. 버전 1.8.0-beta01에는 이 커밋이 포함되어 있습니다.
버그 수정
- Fragment
1.7.1에서: 이제 뒤로 탐색 예측은 모든 프래그먼트에 Animator 또는 검색 가능한 AndroidX 전환이 있는 트랜잭션에만 실행됩니다. 부분적으로 탐색 가능한 트랜잭션을 취소하면 검은색 화면이 표시되는 문제가 수정되었습니다. (I43037, b/339169168)
버전 1.8.0-alpha02
2024년 4월 17일
androidx.fragment:fragment-*:1.8.0-alpha02이 출시되었습니다. 버전 1.8.0-alpha02에는 이러한 커밋이 포함되어 있습니다.
버그 수정
- Fragment
1.7.0-rc02에서: 다른 전환 없이sharedElement을 설정하면 실행이 실패하는 이유를 나타내는 로그가 추가되었습니다. (Iec48e) - Fragment
1.7.0-rc02이상: 탐색 불가능한 공유 요소가 다른 모든 전환이 탐색 가능한 트랜잭션에 추가되면 비정상 종료가 발생하는 버그가 수정되었습니다. 이제 트랜잭션이 올바르게 탐색 불가능으로 간주됩니다. (I18ccd)
버전 1.8.0-alpha01
2024년 4월 3일
androidx.fragment:fragment-*:1.8.0-alpha01이 출시되었습니다. 버전 1.8.0-alpha01에는 이 커밋이 포함되어 있습니다.
새로운 기능
- 새로운
AndroidFragmentComposable를 사용하면 프래그먼트 클래스 이름을 통해 Compose 계층 구조에 프래그먼트를 추가할 수 있습니다. 프래그먼트의 상태 저장 및 복원을 자동으로 처리합니다. 이는 AndroidViewBindingComposable를 직접 대체하는 데 사용할 수 있습니다.(b/312895363, Icf841)
문서 변경사항
OnBackStackChangedListenerAPI가 호출되는 시점과 사용 방법을 나타내도록 문서가 업데이트되었습니다. (I0bfd9)
종속 항목 업데이트
- 이제 Fragment가 프로필 설치 프로그램 1.3.1에 종속됩니다.
버전 1.7
버전 1.7.1
2024년 5월 14일
androidx.fragment:fragment-*:1.7.1이 출시되었습니다. 버전 1.7.1에는 이러한 커밋이 포함되어 있습니다.
버그 수정
- 이제 뒤로 탐색 예측은 모든 프래그먼트에 Animator 또는 Seekable Androidx 전환이 있는 트랜잭션에 대해서만 실행됩니다. 이 수정사항은 부분적으로 탐색 가능한 트랜잭션을 취소하면 빈 화면이 발생하는 문제를 해결합니다. (I43037, b/339169168)
버전 1.7.0
2024년 5월 1일
androidx.fragment:fragment-*:1.7.0이 출시되었습니다. 버전 1.7.0에는 이 커밋이 포함되어 있습니다.
뒤로 탐색 예측 동작 지원
- 이제 프래그먼트는
Animator를 사용하거나 AndroidX 전환 1.5.0을 사용할 때 인앱 뒤로 탐색 예측을 지원합니다. 이를 통해 사용자는 동작을 완료하여 트랜잭션을 커밋할지 아니면 취소할지 결정하기 전에 Animator/Transition을 탐색하여 뒤로 동작을 사용하여 이전 프래그먼트를 볼 수 있습니다.
| 전환 시스템 | XML 리소스 | 뒤로 탐색 예측 지원 |
|---|---|---|
Animation |
R.anim |
아니요 |
Animator |
R.animator |
예 |
프레임워크 Transition |
R.transition |
아니요 |
전환 1.4.1 이하를 사용하는 AndroidX Transition |
R.transition |
아니요 |
Transition 1.5.0이 적용된 AndroidX Transition |
R.transition |
예 |
뒤로 탐색 예측 동작을 선택한 후 프래그먼트에서 뒤로 탐색 예측 지원에 문제가 있는 경우 문제를 재현하는 샘플 프로젝트와 함께 프래그먼트에 문제를 제출하세요. 활동의 onCreate()에서 FragmentManager.enabledPredictiveBack(false)를 사용하여 뒤로 탐색 예측을 사용 중지할 수 있습니다.
이제 FragmentManager.OnBackStackChangedListener()는 각각 뒤로 탐색 예측 진행 상황과 취소된 이벤트를 수신하기 위한 onBackStackChangeProgressed() 및 onBackStackChangeCancelled()를 제공합니다.
Fragment Compose Artifact
프래그먼트 기반 아키텍처에서 완전한 Compose 기반 아키텍처로 이동하는 앱을 지원하는 데 중점을 둔 새로운 fragment-compose 아티팩트가 생성되었습니다.
이 새로운 아티팩트에서 사용할 수 있는 첫 번째 기능은 ComposeView를 만들고 올바른 ViewCompositionStrategy를 설정하여 개별 프래그먼트의 UI에 Compose를 더 쉽게 사용할 수 있도록 하는 Fragment의 content 확장 프로그램 메서드입니다.
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
버전 1.7.0-rc02
2024년 4월 17일
androidx.fragment:fragment-*:1.7.0-rc02이 출시되었습니다. 버전 1.7.0-rc02에 포함된 커밋을 확인하세요.
버그 수정
- 다른 전환 없이
sharedElement를 설정하면 실행이 실패하는 이유를 나타내는 로그가 추가되었습니다. (Iec48e) - 탐색 불가능한 공유 요소가 다른 모든 전환이 탐색 가능한 트랜잭션에 추가되면 비정상 종료가 발생하는 버그가 수정되었습니다. 이제 트랜잭션이 올바르게 탐색 불가능으로 간주됩니다. (I18ccd)
버전 1.7.0-rc01
2024년 4월 3일
androidx.fragment:fragment-*:1.7.0-rc01이 출시되었습니다. 버전 1.7.0-rc01에는 이러한 커밋이 포함되어 있습니다.
종속 항목 업데이트
- 이제 Fragment가 프로필 설치 프로그램 1.3.1에 종속됩니다.
버전 1.7.0-beta01
2024년 3월 20일
androidx.fragment:fragment-*:1.7.0-beta01이 출시되었습니다. 버전 1.7.0-beta01에는 이러한 커밋이 포함되어 있습니다.
API 변경사항
- 이제 호스트의 일반 유형의 null 허용 여부가
onGetHost()의 반환 유형의 null 허용 여부와 일치하도록FragmentHostCallback가 Kotlin으로 작성됩니다. (I40af5)
버그 수정
- 컨테이너에 없는 프래그먼트에서 뒤로 탐색 예측 동작을 커밋하면 해당 프래그먼트가 소멸되지 않는 문제가 수정되었습니다. 이제 프래그먼트가 최종 상태로 즉시 이동합니다. (Ida0d9)
- 프래그먼트에서 예측 뒤로 탐색 동작으로 수신 전환을 중단하면 진입 뷰가 소멸되고 빈 화면이 남는 문제가 수정되었습니다. (Id3f22, b/319531491)
버전 1.7.0-alpha10
2024년 2월 7일
androidx.fragment:fragment-*:1.7.0-alpha10이 출시되었습니다. 버전 1.7.0-alpha10에 포함된 커밋을 확인하세요.
버그 수정
- 이전 Fragment 출시에서 알려진 문제로,
Animator또는 AndroidX 전환에 Fragment의 뒤로 탐색 예측 지원을 사용하는 경우addOnBackStackChangedListener을 통해FragmentManager.OnBackStackChangedListener이 추가된 적이 없으면 Fragment가handleOnBackProgressed에서NullPointerException을 발생시키는 문제가 수정되었습니다. (I7c835)
버전 1.7.0-alpha09
2024년 1월 24일
androidx.fragment:fragment-*:1.7.0-alpha09이 출시되었습니다. 버전 1.7.0-alpha09에 포함된 커밋을 확인하세요.
Fragment Compose Artifact
프래그먼트 기반 아키텍처에서 완전한 Compose 기반 아키텍처로 이동하는 앱을 지원하는 데 중점을 둔 새로운 fragment-compose 아티팩트가 생성되었습니다.
이 새로운 아티팩트에서 사용할 수 있는 첫 번째 기능은 ComposeView를 만들고 올바른 ViewCompositionStrategy를 설정하여 개별 프래그먼트의 UI에 Compose를 더 쉽게 사용할 수 있도록 하는 Fragment의 content 확장 프로그램 메서드입니다. (561cb7, b/258046948)
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
새로운 기능
- 이제
FragmentManager.OnBackStackChangedListener()는 각각 뒤로 탐색 예측 진행 상황과 취소된 이벤트를 수신하기 위한onBackStackChangeProgressed()및onBackStackChangeCancelled()를 제공합니다. (214b87)
알려진 문제
Animator또는 AndroidX 전환에 프래그먼트의 뒤로 탐색 예측 지원을 사용하는 경우addOnBackStackChangedListener을 통해FragmentManager.OnBackStackChangedListener가 추가된 적이 없으면 프래그먼트가handleOnBackProgressed에서NullPointerException을 발생시킵니다. 리스너를 수동으로 추가하면 비정상 종료를 해결할 수 있습니다. 이 문제는 다음 버전의 Fragments에서 수정될 예정입니다.
버전 1.7.0-alpha08
2024년 1월 10일
androidx.fragment:fragment-*:1.7.0-alpha08이 출시되었습니다. 버전 1.7.0-alpha08에 포함된 커밋을 확인하세요.
정리
- 전환
1.5.0-alpha06에서 수정된 전환 라이브러리의 해결 방법을 삭제했습니다. (I04356)
버전 1.7.0-alpha07
2023년 11월 29일
androidx.fragment:fragment-*:1.7.0-alpha07이 출시되었습니다. 버전 1.7.0-alpha07에 포함된 커밋을 확인하세요.
버그 수정
- 공유 요소 전환을 설정하고 enter/exitTransition도 설정하지 않아 발생하는
NullPointerException를 수정했습니다. (I8472b) - Fragment
1.6.2에서: 이제FragmentContainerView의 프래그먼트가 확장되면FragmentManager, 호스트, ID와 같은 상태를onInflate콜백에서 액세스할 수 있습니다. (I1e44c, b/307427423) - Fragment
1.6.2에서:clearBackStack를 사용하여 프래그먼트 집합을 삭제할 때 이제 상위 프래그먼트의ViewModels가 삭제되면 중첩된 프래그먼트의ViewModel가 삭제됩니다. (I6d83c, b/296173018)
버전 1.7.0-alpha06
2023년 10월 4일
androidx.fragment:fragment-*:1.7.0-alpha06이 출시되었습니다. 버전 1.7.0-alpha06에 포함된 커밋을 확인하세요.
종속 항목 업데이트
- 프래그먼트가 전환
1.5.0-alpha04에 추가된 새animateToStartAPI에 따라 달라지도록 업데이트되었습니다.
버전 1.7.0-alpha05
2023년 9월 20일
androidx.fragment:fragment-*:1.7.0-alpha05이 출시되었습니다. 버전 1.7.0-alpha05에 포함된 커밋을 확인하세요.
새로운 기능
- 이제 프래그먼트는 Androidx 전환을 사용할 때 뒤로 탐색 예측을 지원합니다. 이를 통해 뒤로 동작을 사용하여 맞춤 Androidx 전환으로 이전 프래그먼트를 탐색한 후 완료된 동작을 통해 트랜잭션을 커밋하거나 취소할 수 있습니다. 이 기능을 사용 설정하려면 전환
1.5.0-alpha03출시를 사용해야 합니다. (Ib49b4, b/285175724)
알려진 문제
- 현재 전환으로 뒤로 동작을 한 번 취소한 후 다음에 뒤로 동작을 시작하면 전환이 실행되지 않아 빈 화면이 표시되는 문제가 있습니다. 이는 전환 라이브러리의 문제로 인해 발생할 수 있습니다. (b/300157785) 이 문제가 표시되면 문제를 재현하는 샘플 프로젝트와 함께 Fragment에 문제를 신고하세요. 활동의
onCreate()에서FragmentManager.enabledPredictiveBack(false)를 사용하여 뒤로 탐색 예측을 사용 중지할 수 있습니다.
버전 1.7.0-alpha04
2023년 9월 6일
androidx.fragment:fragment-*:1.7.0-alpha04이 출시되었습니다. 버전 1.7.0-alpha04에 포함된 커밋을 확인하세요.
버그 수정
- 프래그먼트가 올바른 수명 주기 상태에 도달하지 못하는 예측 뒤로 탐색 동작을 취소할 때 발생하는 문제를 수정했습니다. (I7cffe, b/297379023)
- 애니메이션이 전환과 함께 실행되도록 허용된 회귀 문제가 수정되었습니다. (I59f36)
- 뒤로 탐색 예측을 프래그먼트와 함께 사용할 때 백 스택의 마지막에서 두 번째 프래그먼트에서 연속으로 두 번 뒤로 이동하려고 하면 비정상 종료가 발생하는 문제를 수정했습니다. (Ifa1a4)
버전 1.7.0-alpha03
2023년 8월 23일
androidx.fragment:fragment-*:1.7.0-alpha03이 출시되었습니다. 버전 1.7.0-alpha03에 포함된 커밋을 확인하세요.
버그 수정
- 뒤로 탐색 예측을 사용할 때 프래그먼트 관리자의 뒤로 스택에 있는 첫 번째 프래그먼트가 건너뛰어지고 3버튼 탐색 또는 뒤로 탐색 예측 동작을 통해 시스템 뒤로를 사용할 때 활동이 종료되는 프래그먼트 문제가 수정되었습니다. (I0664b, b/295231788)
버전 1.7.0-alpha02
2023년 8월 9일
androidx.fragment:fragment-*:1.7.0-alpha02이 출시되었습니다. 버전 1.7.0-alpha02에 포함된 커밋을 확인하세요.
버그 수정
- API 34에서 뒤로 탐색 예측 동작과 함께 프래그먼트를 사용하는 경우 탐색을 지원하지 않는 전환 시스템 (
Animations,Transitions)을 사용하거나 전환을 전혀 사용하지 않으면 이제 프래그먼트가 동작이 완료될 때까지 기다린 후 뒤로 작업을 실행합니다. (I8100c)
버전 1.7.0-alpha01
2023년 6월 7일
androidx.fragment:fragment-*:1.7.0-alpha01이 출시되었습니다. 이 버전은 내부 브랜치에서 개발되었습니다.
새로운 기능
- 이제 프래그먼트가
Animator를 사용할 때 예측 인앱 뒤로 탐색을 지원합니다. 이를 통해 뒤로 동작을 사용하여 맞춤 Animator가 있는 이전 프래그먼트를 확인한 후 완료된 동작을 통해 트랜잭션을 커밋하거나 취소할 수 있습니다. 실험용enablePredictiveBack()를 사용하고false을 전달하여 이 새로운 동작을 사용 중지할 수도 있습니다.
버전 1.6
버전 1.6.2
2023년 11월 1일
androidx.fragment:fragment-*:1.6.2이 출시되었습니다. 버전 1.6.2에 포함된 커밋을 확인하세요.
버그 수정
- 이제
FragmentContainerView의 프래그먼트가 확장되면FragmentManager, 호스트, ID와 같은 상태에onInflate콜백에서 액세스할 수 있습니다. (I1e44c, b/307427423) clearBackStack를 사용하여 프래그먼트 집합을 삭제할 때 이제 상위 프래그먼트의ViewModels가 삭제되면 중첩된 프래그먼트의ViewModel가 삭제됩니다. (I6d83c, b/296173018)
버전 1.6.1
2023년 7월 26일
androidx.fragment:fragment-*:1.6.1이 출시되었습니다. 버전 1.6.1에 포함된 커밋을 확인하세요.
버그 수정
- 활동이 중지되었지만 소멸되지 않았을 때 저장된 상태가 프래그먼트 인스턴스가
RESUMED상태로 다시 이동된 후에도 잘못 캐시되는 문제를 수정했습니다. 이렇게 하면 여러 백 스택 API를 사용하여 프래그먼트를 저장하고 복원할 때 해당 프래그먼트 인스턴스가 백 스택에 있는 경우 캐시된 상태가 재사용됩니다. (I71288, b/246289075)
종속 항목 업데이트
- 이제 Fragment가 Activity 1.7.2에 종속됩니다. 이 문제는 Kotlin 사용자가 활동에 대한 명시적 종속 항목 없이
ComponentDialog를 확장할 수 없는 문제를 수정합니다. (b/287509323)
버전 1.6.0
2023년 6월 7일
androidx.fragment:fragment-*:1.6.0이 출시되었습니다. 버전 1.6.0에 포함된 커밋을 확인하세요.
1.5.0 이후 중요 변경사항
Fragment의 저장된 상태가 비공개 라이브러리 상태(맞춤Parcelable클래스)와 개발자가 제공하는 상태 간에 완전히 분할되었습니다. 이 상태는 이제 항상Bundle에 저장되어 프래그먼트의 상태가 시작되는 위치를 정확하게FragmentManager.OnBackStackChangedListener인터페이스가onBackStackChangeStarted및onBackStackChangeCommitted의 두 가지 추가 콜백으로 확장되었습니다. 이러한 콜백은 각Fragment가 프래그먼트 백 스택에서 추가/삭제되기 직전과 트랜잭션이 커밋된 직후에 각각 호출됩니다.FragmentStrictMode에 새로운WrongNestedHierarchyViolation이 추가되어, 하위 프래그먼트가 상위 요소의 뷰 계층 구조 내에 중첩되지만 상위 요소의childFragmentManager에는 추가되지 않을 때 이를 감지합니다.Intent나IntentSender를 사용하는Fragment와FragmentManagerAPI는 이제 null 값을 전달하는 것을 방지하기 위해 적절한@NonNull주석을 지정합니다. null 값은 이러한 메서드가 호출하는 각각의 Android 프레임워크 API를 항상 즉각적으로 다운시키기 때문입니다.- 이제
DialogFragment는requireComponentDialog()API를 통해 기본ComponentDialog에 대한 액세스를 제공합니다. - 이제 Fragment가 Lifecycle
2.6.1에 종속됩니다. - 이제 Fragment가 SavedState
1.2.1에 종속됩니다. - 이제 Fragment가 ProfileInstaller
1.3.0에 종속됩니다. fragment-testing-manifest아티팩트가 매니페스트 항목을 나머지 프래그먼트 테스트 구성요소와 분리합니다. 즉, 다음을 실행할 수 있습니다.debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")이렇게 하면
fragment-testing과androidx.test간의 버전 차이로 인한 충돌을 방지할 수 있습니다.
버전 1.6.0-rc01
2023년 5월 10일
androidx.fragment:fragment-*:1.6.0-rc01이 출시되었습니다. 버전 1.6.0-rc01에 포함된 커밋을 확인하세요.
버그 수정
- 여러
startActivityForResult요청이 연속으로 이루어진 경우ActivityResult가 잘못된 요청 코드와 함께 전송되는 문제를 수정했습니다. (If0b9d, b/249519359) - 백 스택을 실제로 변경하는 트랜잭션과 혼합된 경우 백 스택을 실제로 변경하지 않는 트랜잭션에
onBackStackChangeListener콜백이 디스패치되는 문제가 수정되었습니다. (I0eb5c, b/279306628)
버전 1.6.0-beta01
2023년 4월 19일
androidx.fragment:fragment-*:1.6.0-beta01이 출시되었습니다. 버전 1.6.0-beta01에 포함된 커밋을 확인하세요.
버그 수정
- 제한 시간과 함께
postponeEnterTransition를 사용한 후 연기된 프래그먼트를 대체해도 더 이상 연기된 프래그먼트가 누수되지 않습니다. (I2ec7d, b/276375110) - 이제 여러 트랜잭션에 동일한 프래그먼트가 포함되어 있더라도 새
onBackStackChangeStarted및onBackStackChangeCommitted콜백은 프래그먼트를 한 번만 디스패치합니다. (Ic6b69)
버전 1.6.0-alpha09
2023년 4월 5일
androidx.fragment:fragment-*:1.6.0-alpha09이 출시되었습니다. 버전 1.6.0-alpha09에 포함된 커밋을 확인하세요.
API 변경사항
- 이제
DialogFragment는requireComponentDialog()API를 통해 기본ComponentDialog에 대한 액세스를 제공합니다. (I022e3, b/234274777) commitNow(),executePendingTransactions(),popBackStackImmediate()API가@MainThread로 주석 처리되어 이제 런타임에 실패하기를 기다리는 대신 기본 스레드에서 호출되지 않으면 모두 빌드 오류가 발생합니다. (Ic9665, b/236538905)
버그 수정
- 동일한 프레임에서 저장 및 복원하면 비정상 종료가 발생할 수 있는
FragmentManager의 버그가 수정되었습니다. (Ib36af, b/246519668) - 이제
OnBackStackChangedListener,onBackStackChangeStarted,onBackStackChangeCommitted콜백은FragmentManager백 스택이 변경될 때만 실행됩니다. (I66055, b/274788957)
버전 1.6.0-alpha08
2023년 3월 22일
androidx.fragment:fragment-*:1.6.0-alpha08이 출시되었습니다. 버전 1.6.0-alpha08에 포함된 커밋을 확인하세요.
동작 변경
OnBackStackChangedListener.onBackStackChangeCommited콜백의 타이밍이 프래그먼트 작업이 실행되기 전에 실행되도록 조정되었습니다. 이렇게 하면 콜백에 분리된 프래그먼트가 전달되지 않습니다. (I66a76, b/273568280)
버그 수정
- Fragment
1.5.6에서:Lifecycle가 이미STARTED이고 결과가 이미 제공된 경우setFragmentResultListener내에서clearFragmentResultListener을 호출해도 작동하지 않는 문제가 수정되었습니다. (If7458)
종속 항목 업데이트
- 이제 Fragment가 Lifecycle
2.6.1에 종속됩니다. (586fe7) - 이제 Fragment가 SavedState
1.2.1에 종속됩니다. (078e4e) - 이제 Fragment가 ProfileInstaller
1.3.0에 종속됩니다. (3fc05b)
버전 1.6.0-alpha07
2023년 3월 8일
androidx.fragment:fragment-*:1.6.0-alpha07이 출시되었습니다. 버전 1.6.0-alpha07에 포함된 커밋을 확인하세요.
버그 수정
- Fragment
1.5.6: 메뉴 항목을 추가했는지 여부와 관계없이 프래그먼트를 삭제하면 활동의 메뉴가 무효화되는 문제가 수정되었습니다. (50f098, b/244336571)
버전 1.6.0-alpha06
2023년 2월 22일
androidx.fragment:fragment-*:1.6.0-alpha06이 출시되었습니다. 버전 1.6.0-alpha06에 포함된 커밋을 확인하세요.
동작 변경사항
- 이제
FragmentManager의onBackStackChangedListener에서 새로운onBackStackChangedStarted콜백이 프래그먼트가 타겟 상태로 이동하기 전에 실행됩니다. (I34726)
버전 1.6.0-alpha05
2023년 2월 8일
androidx.fragment:fragment-*:1.6.0-alpha05가 출시되었습니다. 버전 1.6.0-alpha05에 포함된 커밋을 확인하세요.
새로운 기능
- 이제
FragmentManager.OnBackStackChagnedListener인터페이스에서 두 가지 추가 콜백onBackStackChangeStarted와onBackStackChangeCommitted를 제공합니다. 이 콜백은 추가 정보를 허용하고FragmentManager에서 백 스택 변경사항이 발생하는 시점을 제어합니다. (Ib7ce5, b/238686802)
API 변경사항
Intent나IntentSender를 사용하는Fragment와FragmentManagerAPI는 이제 null 값을 전달하는 것을 방지하기 위해 적절한@NonNull주석을 지정합니다. null 값은 이러한 메서드가 호출하는 각각의 Android 프레임워크 API를 항상 즉각적으로 다운시키기 때문입니다. (I06fd4)
버전 1.6.0-alpha04
2022년 12월 7일
androidx.fragment:fragment-*:1.6.0-alpha04가 출시되었습니다. 버전 1.6.0-alpha04에 포함된 커밋을 확인하세요.
새로운 기능
FragmentStrictMode에 새로운WrongNestedHierarchyViolation이 추가되어, 하위 프래그먼트가 상위 요소의 뷰 계층 구조 내에 중첩되지만 상위 요소의childFragmentManager에는 추가되지 않을 때 이를 감지합니다. (I72521, b/249299268)
동작 변경사항
- 이제 프래그먼트가
onAttach()전에SavedStateRegistry상태를 복원하여 모든 상향 수명 주기 메서드에서 사용할 수 있도록 합니다. (I1e2b1)
API 변경사항
fragment-testing-manifest아티팩트가 매니페스트 항목을 나머지 프래그먼트 테스트 구성요소와 분리합니다. 즉, 다음을 실행할 수 있습니다.
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
이렇게 하면 fragment-testing과 androidx.test 간의 버전 차이로 인한 충돌을 방지할 수 있습니다. (I8e534, b/128612536)
버그 수정
- Fragment
1.5.5에서: Fragment가 더 이상 뷰 레지스트리 저장 상태의 일부로ViewModel상태를 잘못 저장하지 않습니다. (I10d2b, b/253546214)
버전 1.6.0-alpha03
2022년 10월 5일
androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03 및 androidx.fragment:fragment-testing:1.6.0-alpha03이 출시되었습니다. 버전 1.6.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
- 이제
DialogFragment를 확장하는 클래스는onDismiss()재정의에서 super를 호출해야 합니다. (I14798, b/238928865)
버그 수정
- 프래그먼트가 항상 적절한 콜백을 받을 수 있도록 새 제공자 콜백 인터페이스(
OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider)의 통합으로 인한 회귀 문제를 해결했습니다. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)
버전 1.6.0-alpha02
2022년 8월 24일
androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02, androidx.fragment:fragment-testing:1.6.0-alpha02가 출시되었습니다. 버전 1.6.0-alpha02에 포함된 커밋을 확인하세요.
버그 수정
- Fragment
1.5.2에서:popBackStack()및replace()트랜잭션을 동시에 실행하면 기존 프래그먼트에서 잘못된Animation/Animator를 실행하는 문제를 수정했습니다. (Ib1c07, b/214835303)
버전 1.6.0-alpha01
2022년 7월 27일
androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01, androidx.fragment:fragment-testing:1.6.0-alpha01이 출시되었습니다. 버전 1.6.0-alpha01에 포함된 커밋을 확인하세요.
동작 변경사항
Fragment의 저장된 상태가 비공개 라이브러리 상태(맞춤Parcelable클래스)와 개발자가 제공하는 상태 간에 완전히 분할되었습니다. 이 상태는 이제 항상Bundle에 저장되어 프래그먼트의 상태가 시작되는 위치를 정확하게 파악할 수 있습니다. (b/207158202)
버그 수정
- Fragment
1.5.1에서: AGP 7.4와 함께 번들로 제공되는 린트 버전을 사용하면 린트가 다운되는DialogFragmentCallbacksDetector의 회귀 문제를 수정했습니다. (b/237567009)
종속 항목 업데이트
- Fragment
1.5.1에서: 이제 Fragment 라이브러리가 Lifecycle2.5.1에 종속됩니다. (Id204c) - Fragment
1.5.1에서: 이제 Fragment 라이브러리가 Activity1.5.1에 종속됩니다. (I10f07)
버전 1.5
버전 1.5.7
2023년 4월 19일
androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7 및 androidx.fragment:fragment-testing:1.5.7이 출시되었습니다. 버전 1.5.7에 포함된 커밋을 확인하세요.
버그 수정
- 제한 시간과 함께
postponeEnterTransition를 사용한 후 연기된 프래그먼트를 대체해도 더 이상 연기된 프래그먼트가 누수되지 않습니다. (I2ec7d, b/276375110)
버전 1.5.6
2023년 3월 22일
androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6 및 androidx.fragment:fragment-testing:1.5.6이 출시되었습니다. 버전 1.5.6에 포함된 커밋을 확인하세요.
버그 수정
- 메뉴 항목을 추가했는지 여부와 관계없이 프래그먼트를 삭제하면 활동의 메뉴가 무효화되는 문제가 수정되었습니다. (50f098, b/244336571)
Lifecycle이 이미STARTED이고 결과가 이미 제공된 경우setFragmentResultListener내에서clearFragmentResultListener를 호출하면 작동하지 않는 문제가 수정되었습니다. (If7458)
버전 1.5.5
2022년 12월 7일
androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5, androidx.fragment:fragment-testing:1.5.5가 출시되었습니다. 버전 1.5.5에 포함된 커밋을 확인하세요.
버그 수정
- Fragment가 더 이상 뷰 레지스트리 저장 상태의 일부로
ViewModel상태를 잘못 저장하지 않습니다. (I10d2b, b/253546214)
버전 1.5.4
2022년 10월 24일
androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4, androidx.fragment:fragment-testing:1.5.4가 출시되었습니다. 버전 1.5.4에 포함된 커밋을 확인하세요.
버그 수정
- 제공업체 콜백 인터페이스(
OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider)를 구현하지 않는 호스트에서 맞춤FragmentController를 사용하고 지원 중단된 전달 함수를 호출하면 하위 프래그먼트로의 전달에 실패하는 오류를 수정했습니다. (I9b380)
버전 1.5.3
2022년 9월 21일
androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3 및 androidx.fragment:fragment-testing:1.5.3이 출시되었습니다. 버전 1.5.3에 포함된 커밋을 확인하세요.
버그 수정
- 백 스택의 프래그먼트에서
onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory(),onConfigurationChanged()콜백을 가져오는 오류를 수정했습니다. (I34581, I8dfe6, b/242570955) - 중첩된 하위 프래그먼트가 더 이상
onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory()또는onConfigurationChanged()콜백을 여러 개 수신하지 않습니다. (I690b3, Id0096, If9d6b, I2cba2)
버전 1.5.2
2022년 8월 10일
androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2, androidx.fragment:fragment-testing:1.5.2가 출시되었습니다. 버전 1.5.2에 포함된 커밋을 확인하세요.
버그 수정
popBackStack()및replace()트랜잭션을 동시에 실행하면 기존 프래그먼트에서 잘못된Animation/Animator를 실행하는 문제를 수정했습니다. (Ib1c07, b/214835303)
버전 1.5.1
2022년 7월 27일
androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1, androidx.fragment:fragment-testing:1.5.1이 출시되었습니다. 버전 1.5.1에 포함된 커밋을 확인하세요.
버그 수정
- AGP 7.4와 함께 번들로 제공되는 린트 버전을 사용하면 린트가 다운되는
DialogFragmentCallbacksDetector의 회귀 문제를 수정했습니다. (b/237567009)
종속 항목 업데이트
- Fragment 라이브러리가 이제 Lifecycle
2.5.1에 종속됩니다. (Id204c) - Fragment 라이브러리가 이제 Activity
1.5.1에 종속됩니다. (I10f07)
버전 1.5.0
2022년 6월 29일
androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0, androidx.fragment:fragment-testing:1.5.0이 출시되었습니다. 버전 1.5.0에 포함된 커밋을 확인하세요.
1.4.0 이후 중요 변경사항
- CreationExtras 통합: 이제
Fragment에서 Lifecycle2.5.0의CreationExtras를 통해 스테이트리스(Stateless)ViewModelProvider.Factory를 제공할 수 있습니다. - 구성요소 대화상자 통합: 이제
DialogFragment가 Activity1.5.0을 통해ComponentDialog를onCreateDialog()에서 반환된 기본 대화상자로 사용합니다. - 저장된 인스턴스 상태 리팩터링: 프래그먼트가 인스턴스 상태를 저장하는 방식을 변경하기 시작했습니다. 이는 프래그먼트에 저장된 상태와 상태의 소스를 명확히 파악하는 데 도움이 됩니다. 현재 변경사항은 다음과 같습니다.
- 이제
FragmentManager는 저장된 인스턴스 상태를 직접 맞춤Parcelable에 저장하는 대신Bundle에 저장합니다. - 아직 전송되지 않은
Fragment Result APIs를 통해 설정된 결과는 이제FragmentManager의 내부 상태와 별개로 저장됩니다. - 이제 개별 프래그먼트와 연결된 상태가
FragmentManager의 내부 상태와 별개로 저장되므로 개별 프래그먼트와 연결된 저장된 상태의 양을Fragment디버그 로깅에 있는 고유 ID와 연결할 수 있습니다.
- 이제
기타 변경사항
- 이제
FragmentStrictMode가 클래스 이름과 함께allowViolation()을 사용하여 특정 위반 불이익을 우회하는 비공개 서드 파티 프래그먼트 기능을 제공합니다. - 활동의
ActionBar에 메뉴를 제공하는 Fragment API가 지원 중단되었습니다. Activity1.4.0에 추가된MenuHost및MenuProviderAPI는 테스트 가능하고 수명 주기를 인식하는 API 노출 영역을 제공하며 프래그먼트에서 이를 사용해야 합니다.
버전 1.5.0-rc01
2022년 5월 11일
androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01, androidx.fragment:fragment-testing:1.5.0-rc01이 출시되었습니다. 버전 1.5.0-rc01에 포함된 커밋을 확인하세요.
저장된 인스턴스 상태 리팩터링
- 이제 개별 프래그먼트와 연결된 상태가
FragmentManager의 내부 상태와 별개로 저장되므로 개별 프래그먼트와 연결된 저장된 상태의 양을 Fragment 디버그 로깅에 있는 고유 ID와 연결할 수 있습니다. (a153e0, b/207158202)
버전 1.5.0-beta01
2022년 4월 20일
androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01, androidx.fragment:fragment-testing:1.5.0-beta01이 출시되었습니다. 버전 1.5.0-beta01에 포함된 커밋을 확인하세요.
API 변경사항
DialogFragment는showNow함수와의 패리티를 위해commitNow를 사용하는 새로운 메서드dismissNow를 추가했습니다. 이로 인해Dialog가 즉시 닫히는 것은 아니며 동기화 방식으로만FragmentManager의 상태를 업데이트합니다. (I15c36, b/72644830)
저장된 인스턴스 상태 리팩터링
- 이제
FragmentManager는 저장된 인스턴스 상태를 직접 맞춤Parcelable에 저장하는 대신Bundle에 저장합니다. 이는 Fragment에서 실제로 저장하는 내용을 추가로 투명하게 만드는 첫 번째 단계입니다. (I93807, b/207158202) - 아직 전송되지 않은 Fragment Result API를 통해 설정된 결과는
FragmentManager의 내부 상태와 별개로 저장됩니다. 이렇게 하면 저장된 인스턴스 상태의 일부로 저장되는 결과를 추가로 투명하게 만들 수 있습니다. (I6ea12, b/207158202)
버전 1.5.0-alpha05
2022년 4월 6일
androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05, androidx.fragment:fragment-testing:1.5.0-alpha05가 출시되었습니다. 버전 1.5.0-alpha05에 포함된 커밋을 확인하세요.
API 변경사항
Fragment의setHasOptionsMenu()가 지원 중단되었습니다. 메뉴 및 메뉴 항목을 관리하려면 Fragment1.5.0-alpha04출시 노트에 따라 대신 새 메뉴 API를 사용해야 합니다. (I7b4b4, b/226438239)
버전 1.5.0-alpha04
2022년 3월 23일
androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04, androidx.fragment:fragment-testing:1.5.0-alpha04가 출시되었습니다. 버전 1.5.0-alpha04에 포함된 커밋을 확인하세요.
API 변경사항
- 활동의
ActionBar에 메뉴를 제공하는 Fragment API는 프래그먼트를 활동과 긴밀하게 결합하며 분리하여 테스트할 수 없으므로 지원 중단되었습니다. Activity1.4.0-alpha01에 추가된MenuHost및MenuProviderAPI는 테스트 가능하고 수명 주기를 인식하는 API 노출 영역을 제공하며 프래그먼트에서 이를 사용해야 합니다. (I50a59, I20758)
버그 수정
- 이제
SavedStateViewFactory가SavedStateRegistryOwner로 초기화된 경우에도CreationExtras사용을 지원합니다. 추가 인수가 제공되면 초기화된 인수는 무시됩니다. (I6c43b, b/224844583)
버전 1.5.0-alpha03
2022년 2월 23일
androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03 및 androidx.fragment:fragment-testing:1.5.0-alpha03이 출시되었습니다. 버전 1.5.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
- 이제
CreationExtras를by viewModels()및by activityViewModels()함수에 전달할 수 있습니다. (Ibefe7, b/217601110)
동작 변경사항
- 이제
DialogFragment에서onCreateDialog()가 반환하는 기본 대화상자로ComponentDialog를 사용합니다. (If3784, b/217618170)
버전 1.5.0-alpha02
2022년 2월 9일
androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02, androidx.fragment:fragment-testing:1.5.0-alpha02가 출시되었습니다. 버전 1.5.0-alpha02에 포함된 커밋을 확인하세요.
새로운 기능
- 이제
FragmentStrictMode가 클래스 이름과 함께allowViolation()을 사용하여 특정 위반 불이익을 우회하는 비공개 서드 파티 프래그먼트 기능을 제공합니다. (I8f678)
버전 1.5.0-alpha01
2022년 1월 26일
androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01, androidx.fragment:fragment-testing:1.5.0-alpha01이 출시되었습니다. 버전 1.5.0-alpha01에 포함된 커밋을 확인하세요.
새로운 기능
Fragment는 이제 Lifecycle2.5.0-alpha01의 일부로 도입된 ViewModel CreationExtras와 통합됩니다. (I3060b, b/207012585)
버그 수정
- Fragment
1.4.1에서: xml에서 생성된 뷰 ID에 음수 값이 있을 때FragmentContainerView에서 더 이상 잘못된 상태 예외가 발생하지 않습니다. (Ic185b, b/213086140) - Fragment
1.4.1에서: 맞춤ownerProducer람다를by viewModels()지연 함수에서 사용할 때 맞춤ViewModelProvider.Factory가 제공되지 않는 경우 항상 프래그먼트 팩토리를 사용하는 것이 아니라 이제 해당 소유자의defaultViewModelProviderFactory를 사용합니다. (I56170, b/214106513) Fragment의registerForActivityResult()콜백에서 처음으로ViewModel에 액세스할 때 발생하는 비정상 종료 문제가 수정되었습니다. (Iea2b3)
버전 1.4
버전 1.4.1
2022년 1월 26일
androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1, androidx.fragment:fragment-testing:1.4.1이 출시되었습니다. 버전 1.4.1에 포함된 커밋을 확인하세요.
버그 수정
- xml에서 생성된 뷰 ID에 음수 값이 있을 때
FragmentContainerView에서 더 이상 잘못된 상태 예외가 발생하지 않습니다. (Ic185b, b/213086140) - 맞춤
ownerProducer람다를by viewModels()지연 함수에서 사용할 때 맞춤ViewModelProvider.Factory가 제공되지 않는 경우 항상 프래그먼트 팩토리를 사용하는 것이 아니라 이제 해당 소유자의defaultViewModelProviderFactory를 사용합니다. (I56170, b/214106513)
버전 1.4.0
2021년 11월 17일
androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0 및 androidx.fragment:fragment-testing:1.4.0이 출시되었습니다. 버전 1.4.0에 포함된 커밋을 확인하세요.
1.3.0 이후 중요 변경사항
FragmentStrictModeAPI는 개발자가 사용하는 앱 또는 라이브러리가 지원 중단된 프래그먼트 API를 호출하지 않는지 확인할 수 있는 런타임 검사를 제공합니다. 위반이 감지되면 로그 메시지를 출력하거나 맞춤 리스너를 트리거하거나 앱을 다운시킬 수 있습니다. 사용 설정할 검사와 트리거할 '패널티'를 제어하는FragmentStrictMode.Policy는 새로운setStrictModePolicy()메서드를 통해FragmentManager에 설정할 수 있습니다. 이 정책은FragmentManager에 적용되며 고유한 정책을 설정하지 않는 하위 프래그먼트 관리자에게 전이 형태로 적용됩니다. 프래그먼트의 StrictMode를 참고하세요.이제
FragmentContainerView는 컨테이너에 가장 최근에 추가된 프래그먼트를 반환하는getFragment()메서드를 제공합니다. 이는FragmentContainerView의 ID를 가진findFragmentById()와 동일한 로직을 사용하지만 호출 체인을 허용합니다.val navController = binding.container.getFragment<NavHostFragment>().navControllerFragmentScenario가 이제Closeable을 구현하므로 이를 Kotlin의use메서드 또는 try-with-resources와 함께 사용할 수 있습니다.Fragment 전환 시 테마에서 가져온 표준 활동 전환 애니메이션을 사용 설정할지 지정하기 위해
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}가 추가되었습니다.FragmentManager.enableNewStateManager(boolean)의 실험용 API가 삭제되어 이제 새 상태 관리자가 사용할 수 있는 유일한 옵션입니다.
여러 백 스택
FragmentManager는 addToBackStack()을 사용한 프래그먼트 트랜잭션으로 구성된 백 스택을 유지합니다. 이를 통해 개발자는 프래그먼트가 적절히 상태를 복원할 수 있도록 프래그먼트로 상태 저장 메커니즘을 사용하여 트랜잭션을 팝하고 이전 상태로 돌아갈 수 있습니다.
이 출시는 세 가지 새로운 FragmentManager API(saveBackStack(String name), restoreBackStack(String name), clearBackStack(String name))를 제공하여 이러한 메커니즘을 확장합니다. 이러한 API는 addToBackStack()과 동일한 name을 사용하여 FragmentTransaction의 상태와 그 트랜잭션에 추가된 모든 프래그먼트의 상태를 저장합니다. 따라서 개발자는 이후에 트랜잭션과 프래그먼트를 원래 상태로 복원할 수 있습니다. 이를 통해 현재 백 스택을 저장하고 저장된 백 스택을 복원하여 여러 백 스택 간에 효과적으로 '스왑'할 수 있습니다.
saveBackStack()은 비동기식이며 특정 이름으로 돌아가는 모든 프래그먼트 트랜잭션이 취소되고('팝이 실행됨') 추가된 모든 프래그먼트가 소멸 및 삭제된다는 점에서 popBackStack()과 유사하게 작동합니다. 하지만 여기에는 몇 가지 중요한 차이점이 있습니다.
saveBackStack()이 항상 포함됩니다.- 지정된 이름을 백 스택에서 찾을 수 없거나 null 이름이 제공되는 경우 백 스택에서 모든 트랜잭션을 팝하는
popBackStack()과 달리saveBackStack()은 개발자가 null이 아닌 정확한 이름으로addToBackStack()을 사용하여 이전에 프래그먼트 트랜잭션을 커밋하지 않은 경우에는 아무런 작업을 하지 않습니다. - 이러한 트랜잭션에서 추가된 모든 프래그먼트의 상태가 저장됩니다. 즉, 모든 프래그먼트의 뷰 상태가 저장되고 모든 프래그먼트의
onSaveInstanceState()가 호출되며, 각 상태가 복원되고 그러한 프래그먼트와 관련된 모든ViewModel인스턴스가 보관됩니다(onCleared()가 프래그먼트에서 호출되지 않음).
saveBackStack()과 함께 사용할 수 있는 프래그먼트 트랜잭션은 특정 기준을 충족해야 합니다.
- 모든 프래그먼트 트랜잭션은
setReorderingAllowed(true)를 사용하여 트랜잭션이 단일 원자성 작업으로 복원될 수 있도록 해야 합니다. - 저장된 트랜잭션 집합은 자체 포함된 형태여야 합니다(즉, 트랜잭션 집합 외부에 있는 프래그먼트를 명시적으로 참조해서는 안 됨). 그래야 작업 중에 백 스택에 어떤 변경사항이 있었는지와 관계없이 나중에 언제든지 트랜잭션을 복원할 수 있습니다.
- 저장된 프래그먼트는 보관된 프래그먼트가 되거나, 하위 프래그먼트의 전이적 집합에 보관된 프래그먼트를 가질 수 없습니다. 그래야 백 스택이 저장된 후
FragmentManager가 저장된 프래그먼트에 관한 참조를 반환하지 않습니다.
saveBackStack()과 마찬가지로 각각 이전에 저장된 백 스택을 복원하거나 이전에 저장된 백 스택을 지우는 restoreBackStack()과 clearBackStack()은 같은 이름으로 이전에 saveBackStack()을 호출하지 않은 경우 둘 다 아무 작업도 실행하지 않습니다.
자세한 내용은 여러 백 스택: 자세히 알아보기를 참고하세요.
버전 1.4.0-rc01
2021년 11월 3일
androidx.fragment:fragment:1.4.0-rc01이 Fragment 1.4.0-beta01에서 변경사항 없이 출시되었습니다. 버전 1.4.0-rc01에 포함된 커밋을 확인하세요.
버전 1.4.0-beta01
2021년 10월 27일
androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01 및 androidx.fragment:fragment-testing:1.4.0-beta01이 출시되었습니다. 버전 1.4.0-beta01에 포함된 커밋을 확인하세요.
버그 수정
- 이제 상위 프래그먼트가 자체 콜백을 실행하기 전에 전체 계층 구조로
onHiddenChanged()를 전달합니다. (Iedc20, b/77504618) - 이제 키보드가 열려 있는 프래그먼트에서 recycler 뷰가 있는 프래그먼트로 이동할 때 키보드가 자동으로 닫힙니다. (I8b842, b/196852211)
- 이제
DialogFragment는show(),showNow()또는dismiss()를 호출할 때 생성되는 모든 트랜잭션에setReorderingAllowed(true)를 사용합니다. (Ie2c14) DetachAndAttachFragmentInSameFragmentTransaction이라는 매우 긴 린트 경고가DetachAndAttachSameFragment로 단축되었습니다. (e9eca3)
버전 1.4.0-alpha10
2021년 9월 29일
androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10 및 androidx.fragment:fragment-testing:1.4.0-alpha10이 출시되었습니다. 버전 1.4.0-alpha10에 포함된 커밋을 확인하세요.
린트
- 동일한
FragmentTransaction에서 동일한Fragment의detach()와attach()호출을 모두 감지하는DetachAndAttachFragmentInSameFragmentTransaction린트 경고를 추가했습니다. 이러한 보완 작업이 동일한 트랜잭션에서 실행되면 서로 취소되므로 별도의 트랜잭션으로 분할하여 작업을 실제로 실행해야 합니다. (aosp/1832956, b/200867930) MenuHost의addMenuProviderAPI를 사용할 때 Fragment 수명 주기 사용을 Fragment 뷰 수명 주기로 수정하는FragmentAddMenuProvider린트 오류를 추가했습니다. (aosp/1830457, b/200326272)
문서 업데이트
- 이제 Activity Result API에서 처리되는 API의 지원 중단 메시지, 즉
startActivityForResult,startIntentSenderForResult,onActivityResult,requestPermissions,onRequestPermissionsResult가 모두 자세하게 확장되었습니다. (cce80f) Fragment및DialogFragment의 경우 모두onActivityCreated()의 지원 중단 메시지가 자세하게 확장되었습니다. (224db4)
버전 1.4.0-alpha09
2021년 9월 15일
androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09 및 androidx.fragment:fragment-testing:1.4.0-alpha09가 출시되었습니다. 버전 1.4.0-alpha09에 포함된 커밋을 확인하세요.
새로운 기능
- 이제
clearBackStack(name)을 호출하여 이전에saveBackStack(name)으로 저장된 모든 상태를 삭제할 수 있습니다. (I70cd7)
API 변경사항
getFragment함수가 null 허용 여부를 올바르게 준수하는지 확인하기 위해FragmentContainerView클래스를 다시 작성했습니다. (If694a, b/189629145)- 이제 FragmentStrictMode가 Kotlin으로 작성되었습니다. (I11767, b/199183506)
버그 수정
setReorderingAllowed(true)로 추가된 후 대기 중인 트랜잭션을 실행하기 전에 즉시 삭제된 프래그먼트의 상태가 올바르게 삭제되지 않는 문제가 수정되었습니다. (I8ccb8)
버전 1.4.0-alpha08
2021년 9월 1일
androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08 및 androidx.fragment:fragment-testing:1.4.0-alpha08이 출시되었습니다. 버전 1.4.0-alpha08에 포함된 커밋을 확인하세요.
버그 수정
- 중복 괄호를 더 잘 처리하도록
UseRequireInsteadOfGet린트 검사가 개선되었습니다. (I2d865) - 특수한 추가 케이스를 처리하도록
UseGetLayoutInflater린트 검사가 개선되었습니다. (Ie5423)
버전 1.4.0-alpha07
2021년 8월 18일
androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07 및 androidx.fragment:fragment-testing:1.4.0-alpha07이 변경사항 없이 출시되었습니다. 버전 1.4.0-alpha07에 포함된 커밋을 확인하세요.
버전 1.4.0-alpha06
2021년 8월 4일
androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06 및 androidx.fragment:fragment-testing:1.4.0-alpha06이 출시되었습니다. 버전 1.4.0-alpha06에 포함된 커밋을 확인하세요.
버그 수정
FragmentTransaction복원 중에IllegalStateException으로 표시되거나, 나타난 프래그먼트의 두 번째 사본으로 표시되는 백 스택 간에 빠르게 전환할 때 여러 백 스택에서 발생하던 문제를 해결했습니다. (I9039f)- 상태가 복원된 후
FragmentManager에서 이전에saveBackStack()을 통해 저장된 상태 사본을 보유하던 문제가 해결되었습니다. (Ied212) - 특히
show(FragmentTransaction, String)메서드를 통해 DialogFragment를 추가하면 상태가 저장된 후DialogFragment의dismissAllowingStateLoss()메서드를 호출할 때 이 메서드가 더 이상 다운되지 않습니다. (I84422)
버전 1.4.0-alpha05
2021년 7월 21일
androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05 및 androidx.fragment:fragment-testing:1.4.0-alpha05가 출시되었습니다. 버전 1.4.0-alpha05에 포함된 커밋을 확인하세요.
버그 수정
- Fragment
1.3.6에서:hide()를 사용할 때 루트 뷰에transitionGroup=”true”가 설정되어 있으면 이제 프래그먼트의 뷰가GONE으로 올바르게 설정됩니다. (aosp/1766655, b/193603427) - Fragment
1.3.6에서: 이제 항상FragmentActivity는 저장된 상태를 자신이 재정의된 수명 주기 콜백의 첫 번째 작업으로 잠금 해제합니다. (I6db7a)
종속 항목 업데이트
- Fragment
1.3.6에서: 이제 Fragment는 Activity1.2.4에 종속됩니다. (I3a66c)
버전 1.4.0-alpha04
2021년 6월 30일
androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04 및 androidx.fragment:fragment-testing:1.4.0-alpha04가 출시되었습니다. 버전 1.4.0-alpha04에 포함된 커밋을 확인하세요.
API 변경사항
FragmentManager는 이제 내부에서SavedStateRegistry를 사용하여 상태를 저장합니다.saveAllState()및restoreSavedState()메서드도FragmentController에서 지원 중단되었습니다.FragmentController를 사용하여FragmentActivity외부에서 프래그먼트를 호스팅하는 경우FragmentHostCallbacks를 통해SavedStateRegistryOwner를 구현해야 합니다. (Iba68e, b/188734238)
버그 수정
- 여러 백 스택을 지원하는 과정에서
saveBackStack()을 호출하는 작업을replace()를 사용하는FragmentTransaction실행과 동시에 진행하면 작업이 실패하던 문제가 해결되었습니다. (I73137) - 여러 백 스택 지원에
restoreBackStack()API를 사용할 때, 저장된 백 스택 중 여러 트랜잭션이 포함된 백 스택을 수동으로 복원한 후 발생하는NullPointerException을 수정했습니다. 또한 일부 트랜잭션의setReorderingAllowed(true)가 확인되지 않던 문제도 해결되었습니다. (I8c593) - 프래그먼트가
FragmentManager에서 삭제된 후에도FragmentManager가 관련 프래그먼트의 이전 저장 상태를 잘못 복원해 시간이 지남에 따라 저장 상태의 크기가 지속적으로 커지는 문제를 해결했습니다. (I1fb8e)
버전 1.4.0-alpha03
2021년 6월 16일
androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03 및 androidx.fragment:fragment-testing:1.4.0-alpha03이 출시되었습니다. 버전 1.4.0-alpha03에 포함된 커밋을 확인하세요.
새로운 기능
- 위반 세부정보에 관해 더 자세한 오류 메시지를 제공하도록 모든 Fragment StrictMode
Violation클래스를 업데이트했습니다. (b/187871638)- 이제
FragmentTagUsageViolation은 프래그먼트가 추가되었을 수 있는 상위 컨테이너를 포함하는 더 자세한 오류 메시지를 제공합니다. (Ic33a7) - 이제
WrongFragmentContainerViolation은 프래그먼트가 추가되었던 컨테이너가 포함된 더 자세한 오류 메시지를 제공합니다. (Ib55f8) - 이제
TargetFragmentUsageViolation의 사용 사례 클래스는 위반을 일으키는 프래그먼트와 그 외 포함된 정보가 담긴 더 자세한 오류 메시지를 제공합니다. (Icc6ac) - 이제
RetainInstanceUsageViolation을 확장하는 클래스는 위반을 일으키는 프래그먼트가 포함된 더 자세한 오류 메시지를 제공합니다. (I6bd55) - 이제
FragmentReuseViolation은 프래그먼트의 이전 ID가 포함된 자세한 오류 메시지를 제공합니다. (I28ce2) - 이제
SetUserVisibleHintViolation은 사용자에게 표시되는 힌트가 설정되었던 항목이 포함된 더 자세한 오류 메시지를 제공합니다. (Ib2d5f)
- 이제
동작 변경사항
FragmentContainerView의fitsSystemWindows호출 제한이 취소되었습니다. 더 이상 이로 인해 앱이 다운되지 않습니다. (6b8ddd, b/190622202)
버그 수정
- Fragment
1.3.5이상: aosp/1679887에 의해 Fragment1.3.4에 도입된 공유 요소 전환의 회귀 문제가 수정되었습니다. 이제 프래그먼트는 전환 그룹을 올바르게 처리하며(transitionGroup="true"를 통해 직접 설정하거나transitionName또는background를 통해 간접 설정함) 더 이상 공유 요소로 인한IndexOutOfBoundsException이 발생하지 않습니다. (I16484, b/188679569, b/188969304) - 삭제 프래그먼트를 숨기려고 할 때
FragmentManager가 더 이상 다운되지 않습니다. (I573dd, b/183634730) - 최상위 변수를 평가할 때
OnCreateDialogIncorrectCallback린트 검사가 더 이상 다운되지 않습니다. (0a9efa, b/189967522)
버전 1.4.0-alpha02
2021년 6월 2일
androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02 및 androidx.fragment:fragment-testing:1.4.0-alpha02가 출시되었습니다. 버전 1.4.0-alpha02에 포함된 커밋을 확인하세요.
새로운 기능
- 이제 현재 사용되는 엄격 모드 정책과 관계없이
FragmentManager를 통해 로깅이 사용 설정되면FragmentStrictMode는 항상 위반을 기록합니다. (I02df6, b/187872638) 이제
FragmentStrictMode는 엄격 모드Violation에서 특정Fragment클래스를 제외하도록 지원하여 클래스가 모든 페널티를 우회할 수 있습니다. (Ib4e5d, b/184786736)각 위반을 기반으로 구조체 정보를 추가하도록
FragmentStrictModeViolation클래스가 확장되었습니다. 이렇게 하면 위반한 프래그먼트와 함께 위반을 일으킨 원인을 정확하게 확인할 수 있습니다. (If5118, b/187871150) 각Violation에는 다음이 포함됩니다.- 이제
WrongFragmentContainerViolation에는Fragment가 추가되려고 한ViewGroup이 포함됩니다. (I83c75, b/187871150) TargetFragmentUsageViolation이 대상 프래그먼트와 요청 코드를 포함하는SetTargetFragmentUsageViolation과 함께SetTargetFragmentUsageViolation,GetTargetFragmentUsageViolation,GetTargetFragmentRequestCodeUsageViolation으로 확장되었습니다. (I741b4, b/187871150)- 이제
SetUserVisibleHintViolation은setUserVisibleHint()로 전달되는 부울 값을 포함합니다. (I00585, b/187871150) - 이제
FragmentTagUsageViolation에<fragment>태그가 프래그먼트를 확장하려고 시도한 ViewGroup이 포함됩니다. (I5dbbc, b/187871150) - 이제
FragmentReuseViolation에 위반을 일으킨Fragment의 이전 인스턴스의 고유 ID가 포함됩니다. (I0544d, b/187871150) - 이제
RetainInstanceUsageViolation은 추상 클래스이며 두 가지 경우의 위반 유형을 나타내는 두 개의 서브클래스SetRetainInstanceUsageViolation과GetRetainInstanceUsageViolation을 포함합니다. (Ic81e5, b/187871150)
- 이제
동작 변경사항
- 이제
FragmentContainerView가 프로그래매틱 방식이나 XML을 통해fitsSystemWindow속성을 변경하려고 할 때 예외가 발생합니다. 삽입은 각각의 개별 프래그먼트 뷰에서 처리해야 합니다. (Ie6651, b/187304502)
버전 1.4.0-alpha01
2021년 5월 18일
androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01 및 androidx.fragment:fragment-testing:1.4.0-alpha01이 출시되었습니다. 버전 1.4.0-alpha01에 포함된 커밋을 확인하세요.
새로운 기능
이제
FragmentContainerView는 컨테이너에 가장 최근에 추가된 프래그먼트를 반환하는getFragment()메서드를 제공합니다. 이는FragmentContainerView의 ID를 가진findFragmentById()와 동일한 로직을 사용하지만 호출 체인을 허용합니다. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navControllerFragment 전환 시 테마에서 가져온 표준 활동 전환 애니메이션을 사용 설정할지 지정하기 위해
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}가 추가되었습니다. (I46652)
여러 백 스택
FragmentManager는 addToBackStack()을 사용한 프래그먼트 트랜잭션으로 구성된 백 스택을 유지합니다. 이를 통해 개발자는 프래그먼트가 적절히 상태를 복원할 수 있도록 프래그먼트로 상태 저장 메커니즘을 사용하여 트랜잭션을 팝하고 이전 상태로 돌아갈 수 있습니다.
이 출시는 두 가지 새로운 FragmentManager API(saveBackStack(String name) 및 restoreBackStack(String name))를 제공하여 이러한 매커니즘을 확장합니다. 이러한 API는 addToBackStack()과 동일한 name을 사용하여 FragmentTransaction의 상태와 그 트랜잭션에 추가된 모든 프래그먼트의 상태를 저장합니다. 따라서 개발자는 이후에 트랜잭션과 프래그먼트를 원래 상태로 복원할 수 있습니다. 이를 통해 현재 백 스택을 저장하고 저장된 백 스택을 복원하여 여러 백 스택 간에 효과적으로 '스왑'할 수 있습니다.
saveBackStack()은 비동기식이며 특정 이름으로 돌아가는 모든 프래그먼트 트랜잭션이 취소되고('팝이 실행됨') 추가된 모든 프래그먼트가 소멸 및 삭제된다는 점에서 popBackStack()과 유사하게 작동합니다. 하지만 여기에는 몇 가지 중요한 차이점이 있습니다.
saveBackStack()이 항상 포함됩니다.- 지정된 이름을 백 스택에서 찾을 수 없거나 null 이름이 제공되는 경우 백 스택에서 모든 트랜잭션을 팝하는
popBackStack()과 달리saveBackStack()은 개발자가 null이 아닌 정확한 이름으로addToBackStack()을 사용하여 이전에 프래그먼트 트랜잭션을 커밋하지 않은 경우에는 아무런 작업을 하지 않습니다. - 이러한 트랜잭션에서 추가된 모든 프래그먼트의 상태가 저장됩니다. 즉, 모든 프래그먼트의 뷰 상태가 저장되고 모든 프래그먼트의
onSaveInstanceState()가 호출되며, 각 상태가 복원되고 그러한 프래그먼트와 관련된 모든ViewModel인스턴스가 보관됩니다(onCleared()가 프래그먼트에서 호출되지 않음).
saveBackStack()과 함께 사용할 수 있는 프래그먼트 트랜잭션은 특정 기준을 충족해야 합니다.
- 모든 프래그먼트 트랜잭션은
setReorderingAllowed(true)를 사용하여 트랜잭션이 단일 원자성 작업으로 복원될 수 있도록 해야 합니다. - 저장된 트랜잭션 집합은 자체 포함된 형태여야 합니다(즉, 트랜잭션 집합 외부에 있는 프래그먼트를 명시적으로 참조해서는 안 됨). 그래야 작업 중에 백 스택에 어떤 변경사항이 있었는지와 관계없이 나중에 언제든지 트랜잭션을 복원할 수 있습니다.
- 저장된 프래그먼트는 보관된 프래그먼트가 되거나, 하위 프래그먼트의 전이적 집합에 보관된 프래그먼트를 가질 수 없습니다. 그래야 백 스택이 저장된 후
FragmentManager가 저장된 프래그먼트에 관한 참조를 반환하지 않습니다.
saveBackStack()과 마찬가지로 restoreBackStack()은 개발자가 이전에 동일한 이름으로 saveBackStack()을 호출하지 않았다면 아무런 작업을 하지 않습니다. (b/80029773)
Fragment StrictMode
FragmentStrictMode API는 개발자가 사용하는 앱 또는 라이브러리가 지원 중단된 프래그먼트 API를 호출하지 않는지 확인할 수 있는 런타임 검사를 제공합니다. 위반이 감지되면 로그 메시지를 출력하거나 맞춤 리스너를 트리거하거나 앱을 다운시킬 수 있습니다. 사용 설정할 검사와 트리거할 '패널티'를 제어하는 FragmentStrictMode.Policy는 새로운 setStrictModePolicy() 메서드를 통해 FragmentManager에 설정할 수 있습니다. 이 정책은 FragmentManager에 적용되며 고유한 정책을 설정하지 않는 하위 프래그먼트 관리자에게 전이 형태로 적용됩니다. (#123, #131, #150, b/143774122)
detectFragmentReuse()는 이전에 삭제된Fragment인스턴스가FragmentManager에 다시 추가되는지를 감지합니다.Fragment인스턴스가 소멸되고FragmentManager에서 삭제된 후에는 이 인스턴스와 상호작용하거나 이 인스턴스에 관한 참조를 유지해서는 안 됩니다. (#142, b/153738653)detectFragmentTagUsage()는 개발자가 레이아웃 XML에서<fragment>태그를 사용하는 경우를 감지합니다. 개발자는 프래그먼트를 레이아웃의 일부로 확장할 때 항상FragmentContainerView를 사용해야 합니다. (#141, b/153738235)detectWrongFragmentContainer()는 개발자가FragmentContainerView가 아닌 컨테이너에 프래그먼트를 추가하는 경우를 감지합니다. 개발자는 항상 레이아웃에서FragmentContainerView를 프래그먼트의 컨테이너로 사용해야 합니다. (#146, b/181137036)detectRetainInstanceUsage()는 개발자가 지원 중단된setRetainInstance()또는getRetainInstance()API를 사용하는 경우를 감지합니다. (#140, b/153737954)detectSetUserVisibleHint()는 개발자가 지원 중단된setUserVisibleHint()API를 사용하는 경우를 감지합니다. (#136, b/153738974)detectTargetFragmentUsage()는 개발자가 지원 중단된setTargetFragment(),getTargetFragment()또는getTargetRequestCode()API를 사용하는 경우를 감지합니다. (#139, b/153737745)
API 변경사항
FragmentManager.enableNewStateManager(boolean)의 실험용 API가 삭제되어 이제 새 상태 관리자가 사용할 수 있는 유일한 옵션입니다. (I90036, b/162776418)FragmentScenario가 이제Closeable을 구현하므로 이를 Kotlin의use메서드 또는 try-with-resources와 함께 사용할 수 있습니다. (#121, b/143774122)
새로운 린트 검사
- 이제
DialogFragment내에서LayoutInflater.from(Context)를 사용하면UseGetLayoutInflater린트 검사에서 경고가 표시됩니다. 개발자는LayoutInflater에 적합한 항목을 가져오려면 항상 대화상자 프래그먼트의getLayoutInflater()메서드를 사용해야 합니다. (#156, b/170781346) - 이제
DialogFragment의onCreateDialog()메서드에서setOnCancelListener또는setOnDismissListener를 호출하면DialogFragmentCallbacksDetector린트 검사에서 경고가 표시됩니다. 이러한 리스너는DialogFragment자체 소유이므로 개발자는 콜백을 수신하려면onCancel()및onDismiss()를 재정의해야 합니다. (#171, b/181780047, b/187524311)
버그 수정
- Fragment 1.3.4에서:
ViewModelProvider와 함께ViewTreeViewModelStoreOwner.get()API를 사용하거나 프래그먼트 내에서viewModel()의 Jetpack Compose 메서드와 함께 사용할 때 Fragment1.3.3에서 발생하는 회귀 문제가 해결되었습니다. 이러한 사용 사례에서는 이제getDefaultViewModelProviderFactory()를 재정의하는 경우 프래그먼트에서 제공하는ViewModelProvider.Factory를 올바르게 사용합니다(Hilt를 사용할 때@AndroidEntryPoint로 주석 처리된 프래그먼트에서 하는 것처럼). 개발자가 이 메서드를 재정의하지 않으면 Fragment의 뷰와 함께 상태를 저장하고 복원하는SavedStateViewModelFactory가 기본 팩토리로 생성됩니다. (I5cbfa, b/186097368) - Fragment 1.3.4에서: API 29에서
FragmentContainerView를 사용할 경우 인셋은 더 이상 무기한으로 전달되지 않으며,BottomNavigationBar및FloatingActionButton인스턴스의 문제를 해결합니다. (I1bb78, b/186012452) - Fragment 1.3.4에서: 이제 프로세스 중단 후 프래그먼트 결과 번들에서 Parcelable를 가져올 수 있습니다. (I65932, b/187443158)
- Fragment 1.3.4에서: ViewGroup에서 공유 요소 전환을 실행할 때 ViewGroup의
transitionGroup이 false로 설정되어 있으면 이제 제대로 전환이 이루어집니다. (I99675)
외부 기여
FragmentScenario에서Closeable을 구현할 수 있게 해 주신 시몬 쉴러 님에게 감사드립니다. (#121, b/143774122)- 이 출시를 위해
FragmentStrictModeAPI를 전체 추가해 주신 simonschiller에 감사드립니다. (#123, #131, #150, b/143774122, #142, b/153738653, #141, b/153738235, #146, b/181137036, #140, b/153737954, #136, b/153738974, #139, b/153737745) UseGetLayoutInflater린트 검사를 추가해 주신 tatocaster에 감사드립니다. (#156, b/170781346)DialogFragmentCallbacksDetector린트 검사를 추가해 주신 tatocaster에 감사드립니다. (#171, b/181780047)
버전 1.3
버전 1.3.6
2021년 7월 21일
androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6 및 androidx.fragment:fragment-testing:1.3.6이 출시되었습니다. 버전 1.3.6에 포함된 커밋을 확인하세요.
버그 수정
- Fragment
1.4.0-alpha03에서: 삭제 중인 프래그먼트를 숨기려고 할 때FragmentManager가 더 이상 비정상 종료되지 않습니다. (I573dd, b/183634730) hide()를 사용할 때 루트 뷰에transitionGroup=”true”가 설정되어 있으면 이제 프래그먼트의 뷰가GONE으로 올바르게 설정됩니다. (aosp/1766655, b/193603427)- 이제 항상
FragmentActivity는 저장된 상태를 자신이 재정의된 수명 주기 콜백의 첫 번째 작업으로 잠금 해제합니다. (I6db7a)
종속 항목 업데이트
- Fragment
1.3.6에서: 이제 Fragment는 Activity1.2.4에 종속됩니다. (I3a66c)
버전 1.3.5
2021년 6월 16일
androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5 및 androidx.fragment:fragment-testing:1.3.5가 출시되었습니다. 버전 1.3.5에 포함된 커밋을 확인하세요.
버그 수정
- aosp/1679887에 의해 Fragment
1.3.4에 도입된 공유 요소 전환의 회귀 문제를 수정했습니다. 이제 프래그먼트는 전환 그룹을 올바르게 처리하며(transitionGroup="true"를 통해 직접 설정하거나transitionName또는background를 통해 간접 설정함) 더 이상 공유 요소로 인한IndexOutOfBoundsException이 발생하지 않습니다. (I16484, b/188679569, b/188969304)
버전 1.3.4
2021년 5월 18일
androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4 및 androidx.fragment:fragment-testing:1.3.4가 출시되었습니다. 버전 1.3.4에 포함된 커밋을 확인하세요.
버그 수정
ViewModelProvider와 함께ViewTreeViewModelStoreOwner.get()API를 사용하거나 Hilt를 사용하여 Fragment 내에서viewModel()의 Jetpack Compose 메서드와 사용할 때 Fragment1.3.3에서 발생하는 회귀 문제가 해결되었습니다. 이러한 사용 사례는 이제getDefaultViewModelProviderFactory()를 재정의하면 Fragment에서 제공하는ViewModelProvider.Factory를 정확하게 사용합니다(@AndroidEntryPoint로 주석 처리된 Fragment처럼). 개발자가 이 메서드를 재정의하지 않으면 Fragment의 뷰와 함께 상태를 저장하고 복원하는SavedStateViewModelFactory가 기본 팩토리로 생성됩니다. (I5cbfa, b/186097368)- API 29에서
FragmentContainerView를 사용할 경우 인셋은 더 이상 무기한으로 전달되지 않으며,BottomNavigationBar및FloatingActionButton인스턴스의 문제를 해결합니다. (I1bb78, b/186012452) - 이제 프로세스 중단 후 프래그먼트 결과 번들에서 Parcelable를 가져올 수 있습니다. (I65932, b/187443158)
- ViewGroup에서 공유 요소 전환을 실행할 때 ViewGroup의
transitionGroup이 false로 설정되어 있으면 이제 제대로 전환이 이루어집니다. (I99675)
버전 1.3.3
2021년 4월 21일
androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3 및 androidx.fragment:fragment-testing:1.3.3이 출시되었습니다. 버전 1.3.3에 포함된 커밋을 확인하세요.
새로운 기능
- 이제 프래그먼트의 뷰에서
ViewTreeSavedStateRegistryOwner.get()으로 반환된SavedStateRegistryOwner와 함께 사용할 경우SavedStateViewModelFactory가 작동합니다. (I21acf, b/181577191)
버그 수정
NavHostFragment에 의해 사용되는 것과 같은setPrimaryNavFragment작업이 포함된FragmentTransaction을 표시할 때popEnter애니메이션이 실행되지 않는 프레그먼트1.3.2의 회귀 문제를 해결했습니다. (I38c87, b/183877426)- 이제
FragmentContainerView로 인해Fragment가 새로운WindowInsets집합을 전달하므로 각 프래그먼트가 인셋을 독립적으로 사용할 수 있습니다. (I63f68, b/172153900) - 이제
DialogFragment가 맞춤Dialog클래스의 컨테이너와 ID가 동일한 컨테이너에 하위 프래그먼트가 추가되는 경우를 적절하게 처리하여,BottomSheetDialog와 같은 대화상자에서 내부적으로 사용되는 ID를 재사용할 때 발생하는 뷰 계층 구조 문제를 해결합니다. (Ie6279, b/180021387) - 이제
FragmentManager.dump()가 활성 프래그먼트의 첫 번째 프래그먼트를 적절하게 들여씁니다. (If5c33, b/183705451)
새로운 상태 관리자 버그 수정
- 이제 새 프래그먼트 상태 관리자가 숨기기 작업으로 종료 전환을 올바르게 처리합니다. (I9e4de, b/184830265)
버전 1.3.2
2021년 3월 24일
androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2 및 androidx.fragment:fragment-testing:1.3.2가 출시되었습니다. 버전 1.3.2에 포함된 커밋을 확인하세요.
새로운 상태 관리자 버그 수정
popBackStack()및commit()작업을 함께 실행하는 경우 이제 마지막 작업이 일부 팝 애니메이션과 진입 애니메이션을 실행하는 대신 모든 애니메이션의 방향을 설정합니다. (I7072e, b/181142246)- 공유 요소 계층 구조 내의 뷰에서 공유 요소를 전환할 때 전환 이름이 더 이상 삭제되지 않습니다. (I4d4a6, b/179934757)
종속 항목 업데이트
- Fragment가 이제 Activity 1.2.2에 종속되므로 Fragment 1.3.1 이상을 사용할 때 Activity의
InvalidFragmentVersionForActivityResult린트 검사 문제와 관련된 문제가 해결됩니다. - Fragment가 이제 Lifecycle 2.3.1에 종속됩니다.
버전 1.3.1
2021년 3월 10일
androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1 및 androidx.fragment:fragment-testing:1.3.1이 출시되었습니다. 버전 1.3.1에 포함된 커밋을 확인하세요.
새로운 기능
- 이제
DialogFragment내 대화상자에서 DecorView를 통해 ViewTree 소유자에 액세스할 수 있으므로DialogFragment를ComposeView와 함께 사용할 수 있습니다. (Ib9290, b/180691023)
버그 수정
- FragmentContainerView를 사용하여 이미
RESUMED활동으로 확장된 프래그먼트가 이제 구성 변경 후 제대로 표시됩니다. (Ie14c8, b/180538371) - 프래그먼트
toString()끝에 더 이상 추가}기호가 없습니다. (I54705, b/177761088) - FragmentActivity의 재정의된 메서드가 이제 기본 메서드 javaDoc을 제대로 상속합니다. (I736ce, b/139548782)
setFragmentResult및setFragmentResultListener의 문서에서 더 이상 nullable을 허용하지 않음을 반영하도록 매개변수 문서를 업데이트했습니다. (I990ba, b/178348386)
새로운 상태 관리자 버그 수정
mFocusedView로 인해 발생한 프래그먼트의 메모리 누수 문제를 수정했습니다. (Ib4e9e, b/179925887)- 이제 프래그먼트가 트랜잭션 표시/숨기기를 사용할 때
onCreateOptionsMenu를 제대로 호출합니다. (I8bce8, b/180255554) - 프래그먼트가 배치되기 전에 시작하는 전환이 있는 하위 프래그먼트가 이제
RESUMED에 제대로 도달합니다. (Ic11e6, b/180825150) - 이제
<fragment>태그를 사용하여 확장된 프래그먼트가 항상RESUMED로 이동합니다. (I452ac, I9fa49)
종속 항목 업데이트
- Fragment 1.3.1은 Activity
1.2.1에 종속됩니다. (I557b9)
버전 1.3.0
2021년 2월 10일
androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0 및 androidx.fragment:fragment-testing:1.3.0이 출시되었습니다. 버전 1.3.0에 포함된 커밋을 확인하세요.
1.2.0 이후 주요 변경사항
- 새 상태 관리자:
FragmentManager의 내부 기능을 대대적으로 재작성하여 수명 주기 이벤트, 애니메이션, 전환의 전달과 연기된 프래그먼트 처리 방식에 관한 여러 문제를 해결했습니다. Activity Result API 통합: Fragment의 메서드를 재정의하지 않고
startActivityForResult()+onActivityResult()및requestPermissions()+onRequestPermissionsResult()흐름을 처리하도록 Activity1.2.0에 도입된ActivityResultRegistryAPI에 대한 지원이 추가되었습니다. 이러한 흐름을 테스트하기 위한 후크도 제공됩니다. 업데이트된 활동에서 결과 가져오기를 참고하세요.- 이 버전에서는 잘못된 요청 코드 및
FragmentActivity이전 버전에서 Activity Result API의 작동을 막는 권한 요청 전달과 관련된 여러 문제를 해결했습니다.FragmentActivity또는AppCompatActivity에서 Activity Result API를 사용하려면 Fragment 1.3.0으로 업그레이드해야 합니다.
- 이 버전에서는 잘못된 요청 코드 및
Fragment Result API:
FragmentManager의 새 API를 통해 두 Fragment 간에 결과를 전달하는 기능이 추가되었습니다. 이는 탐색의 계층 구조 프래그먼트(상위/하위), DialogFragment 및 Navigation의 프래그먼트에서 작동하며 결과가STARTED이상인 경우에만 프래그먼트로 전송되도록 합니다. 타겟 프래그먼트 API가 지원 중단되었으며 이 새로운 API로 대체되었습니다. Fragment Result API를 사용하여 결과 가져오기를 참고하세요.FragmentOnAttachListener:FragmentActivity및Fragment의onAttachFragment()콜백이 지원 중단되었습니다. 더 유연한 대안을 제공하기 위해 새FragmentOnAttachListener가 추가되었습니다.onAttachFragment()를 테스트 가능한 별도의 리스너에 위임하고 직계 하위 FragmentManager 이외의 FragmentManager에 리스너를 추가하는 작업을 지원할 수 있습니다.FragmentScenario개선사항:fragment-testing아티팩트의FragmentScenario클래스를 Kotlin으로 재작성하여 다음과 같이 개선했습니다.- 이제
FragmentScenario는moveToState()를 구현하기 위해setMaxLifecycle()을 사용하여 모든 API 수준에서 일관된 동작을 보장하고 기본 Activity에서 Fragment의 상태를 분리합니다. - 이제
FragmentScenario는 각Lifecycle.State로 처음 이동하기 전에 프래그먼트 상태의 어설션을 지원하도록 초기Lifecycle.State설정을 지원합니다. - 이제 값을 반환할 수 있는 Kotlin의 구체화된 확장 메서드인
withFragment의 형태로onFragment의FragmentScenarioAPI에 대한 대안이 마련되었습니다. 특히, 특정 블록에서 발생한 예외가 다시 발생합니다.
- 이제
ViewTree지원: 이제Fragment는 Lifecycle2.3.0과 SavedState1.1.0에 추가된ViewTreeLifecycleOwner.get(View),ViewTreeViewModelStoreOwner.get(View)및ViewTreeSavedStateRegistryOwnerAPI를 지원하여 Fragment를Fragment내에서View를 사용할 때 프래그먼트의 뷰 수명 주기에 연결된SavedStateRegistryOwner,LifecycleOwner와ViewModelStoreOwner로 반환합니다.TRANSIT_애니메이션 변경사항: 프래그먼트 기본 효과인TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE,TRANSIT_FRAGMENT_FADE가 이제Animation대신Animator를 사용합니다. 이 Animator를 빌드하는 데 사용된 리소스가 이제 공개되지 않습니다.setRetainInstance()지원 중단: Fragment의setRetainInstance()메서드가 지원 중단되었습니다. ViewModels가 도입되면서 개발자는 활동, 프래그먼트, 탐색 그래프와 연결할 수 있는 상태를 유지하기 위한 특정 API를 갖게 됩니다. 이를 통해 개발자는 보존된 상태가 아닌 일반 상태의 Fragment를 사용하고 별도로 보관하고자 하는 특정 상태를 유지할 수 있습니다. 또한, 단일 생성의 유용한 속성을 유지하면서 누수의 일반적인 원인을 피하고 보관되는 상태(즉,ViewModel의 생성자 및 생성자가 수신하는onCleared()콜백)의 파괴를 방지할 수 있습니다.ViewPager 1 어댑터 지원 중단: ViewPager2
1.0.0이 출시되면서ViewPager와 상호작용하는FragmentPagerAdapter및FragmentStatePagerAdapter클래스가 지원 중단되었습니다. ViewPager에서 ViewPager2로 이전을 참고하세요.
버전 1.3.0-rc02
2021년 1월 27일
androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02 및 androidx.fragment:fragment-testing:1.3.0-rc02가 출시되었습니다. 버전 1.3.0-rc02에 포함된 커밋을 확인하세요.
버그 수정
- 구성 변경 후 상위
DialogFragment가 하위DialogFragment위에 표시되는 문제를 수정했습니다. 하위 대화상자 프래그먼트는 이제 항상 상위 대화상자 프래그먼트 위에 표시됩니다. (I30806, b/177439520) Animation으로hide작업을 실행하면 애니메이션 종료 시 숨기기 프래그먼트가 플래시되는 문제를 수정했습니다. (I57e22, b/175417675)- 뷰 계층 구조가 연결되기 전에 전환이 추가된 프래그먼트가 이제
RESUMED에 적절하게 도달합니다. (I1fc1d, b/177154873)
새로운 상태 관리자 버그 수정
Lifecycle이CREATED에 도달하기 전에 Fragment의 뷰가 소멸되는 사례를 이제 Fragment의 뷰Lifecycle에서 적절하게 처리하여 'INITIALIZED에서 중단된 이벤트 없음'이라는 예외를 방지합니다. (eda2bd, b/176138645)Animator를 사용하는 프래그먼트가 이제FragmentContainerView를 사용할 때 올바른 순서로 표시됩니다. (Id9aa3, b/176089197)
버전 1.3.0-rc01
2020년 12월 16일
androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01 및 androidx.fragment:fragment-testing:1.3.0-rc01이 출시되었습니다. 버전 1.3.0-rc01에 포함된 커밋을 확인하세요.
버그 수정
- 이제
onPrepareOptionsMenu()가onCreateOptionsMenu()와 동일한 로직을 따르며 상위 프래그먼트가setMenuVisibility(false)를 호출할 때 더 이상 호출되지 않습니다. (Id7de8, b/173203654)
새로운 상태 관리자 버그 수정
Animation이 포함된 프래그먼트를FragmentContainerView에 추가한 다음 팝업 창 작업으로 추가를 중단할 때 발생하는 누수 및 시각적 아티팩트를 수정했습니다. (I952d8)onCreate()또는onViewCreated()메서드 중에 프래그먼트의 뷰가 교체되어도 뷰 계층 구조에 유지되는 문제를 수정했습니다. (I8a7d5)- 이제 프래그먼트 루트 뷰가 다시 시작될 때 포커스가 프래그먼트 루트 뷰로 올바르게 복원됩니다. (Ifc84b)
- 동일한 프래그먼트 트랜잭션에서 팝업 창 작업과 교체 작업을 결합하면 이제 적절한 애니메이션이 표시됩니다. (Ifd4e4, b/170328691)
버전 1.3.0-beta02
2020년 12월 2일
androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02 및 androidx.fragment:fragment-testing:1.3.0-beta02가 출시되었습니다. 버전 1.3.0-beta02에 포함된 커밋을 확인하세요.
새로운 기능
- Kotlin 1.4의
FragmentAction용 기능적 인터페이스를 통해 소스 및 바이너리 호환성을 유지하면서FragmentScenario가 Kotlin으로 완전히 변환되었습니다. (I19d31)
동작 변경사항
class또는android:name속성을 사용하여 프래그먼트를 확장하지 않는 FragmentContainerViews를 이제FragmentActivity외부에서 사용할 수 있습니다. (Id4397, b/172266337)- 프래그먼트의 최대 수명 주기를
DESTROYED로 설정하려고 하면 이제IllegalArgumentException이 발생합니다. (Ie7651, b/170765622) DESTROYED상태로 FragmentScenario를 초기화하면 이제IllegalArgumentException이 발생합니다. (I73590, b/170765622)
새로운 상태 관리자 버그 수정
TRANSIT_FRAGMENT_옵션 중 하나 또는Animator를 사용하는 프래그먼트 전환이 중단되면 뷰가 최종 상태에 도달하지 않는 문제를 수정했습니다. (I92426, b/169874632)- 종료
Animation이 있는 프래그먼트가 올바르게 소멸되지 못하던 문제를 수정했습니다. (I83d65) - 효과가 반전된 종료 프래그먼트가 이제 올바르게 취소되고 적절한 입력 효과로 다시 시작됩니다. (I62226, b/167092035)
hide()의 종료Animator가 실행되지 않는 문제를 수정했습니다. (Id7ffe)- 프래그먼트가 이제 연기되었다가 즉시 시작될 때 올바르게 표시됩니다. (Ie713b, b/170022857)
- 애니메이션 중에 포커스가 지정된 뷰를 삭제하는 프래그먼트가
RESUMED에 도달하면 더 이상 분리된 뷰의 포커스를 복원하려고 하지 않습니다. (I38c65, b/172925703)
외부 기여
FragmentFactory가 이제 다양한ClassLoader인스턴스의 프래그먼트 클래스를 별도로 캐시합니다. 사이먼 쉴러님께 감사드립니다. (#87, b/113886460)
버전 1.3.0-beta01
2020년 10월 1일
androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01 및 androidx.fragment:fragment-testing:1.3.0-beta01가 출시되었습니다. 버전 1.3.0-beta01에 포함된 커밋을 확인하세요.
새로운 기능
- 이제
setMaxLifecycle()이 프래그먼트가CREATED로 이동되지 않은 한Lifecycle상태를INITIALIZING으로 설정하는 것을 지원합니다. (b/159662173)
API 변경사항
- Kotlin 1.4를 사용하도록 androidx를 업그레이드합니다. (Id6471, b/165307851, b/165300826)
동작 변경사항
- 프래그먼트 리소스 파일이 올바르게 비공개로 설정되었습니다. (aosp/1425237)
버그 수정
<fragment>태그를 사용하여 확장된 프래그먼트가 이제 STARTED로 이동하기 전에 컨테이너에 뷰가 추가될 때까지 올바르게 대기합니다. (I02f4c)- 표시된 다음
setMaxLifecycle()을CREATED로 설정한 프래그먼트가 이제 종료 효과를 올바르게 실행합니다. (b/165822335) - 백 스택에 추가되지 않은 분리된 프래그먼트를 삭제해도 더 이상 메모리 누수가 발생하지 않습니다. 니클라스 안스만 기어츠 씨께 감사드립니다. (b/166489383)
- 이제 활성 프래그먼트에 항상 null이 아닌
FragmentManager가 있으며 null이 아닌FragmentManager가 있는 프래그먼트는 항상 활성 상태로 간주됩니다. (aosp/1422346) - 프래그먼트 기본 효과
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE및TRANSIT_FRAGMENT_FADE가 이제Animation대신Animator를 사용합니다. (b/166155034)
새로운 상태 관리자 버그 수정
- 이제 프래그먼트가 애니메이션을 시작하기 직전에 뷰 포커스 상태를 올바르게 복원합니다. (Icc256)
- 공유 요소 전환만 있는 프래그먼트가 이제 특수 효과를 올바르게 완료합니다. 즉, 실제로 최종 상태로 이동합니다. (Iaebc7, b/166658128)
- 이제 프래그먼트 뷰가 제거되기 전에 항상 컨테이너에서 삭제됩니다. (Id5876)
- 새로운 상태 관리자가 이제 진입 프래그먼트 뷰를 추가하기 전에 이탈 프래그먼트 뷰를 일관되게 삭제합니다. (I41a6e)
- 이제 프래그먼트 뷰의 명시적인 가시성 변경사항이 새로운 상태 관리자에 적용됩니다. 즉, 애니메이션이 시작되기 전에 진입 프래그먼트의 뷰를
INVISIBLE로 설정하면 실제로 계속 표시되지 않습니다. (b/164481490) - 이제 프래그먼트가
Animations보다Animators를 우선합니다. 즉, 두 개 다 있는 프래그먼트는Animator만 실행하고Animation을 무시합니다. (b/167579557) - 새로운 상태 관리자가 진입 애니메이션을 사용할 때 더 이상 프래그먼트가 플래시되지 않습니다. (b/163084315)
알려진 문제
새로운 상태 관리자를 사용할 때 이전 프래그먼트로 돌아가지 않고 진입 특수 효과 중에 뒤로를 누르면 이전 프래그먼트가 다시 추가되지 않아 빈 화면이 표시됩니다. (b/167259187, b/167092035, b/168442830)
버전 1.3.0-alpha08
2020년 8월 19일
androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08 및 androidx.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효과를 재정의하거나 개별 프래그먼트의Animator와Transition이 모두 실행되는 경우를 방지합니다. (b/149569323) - 이제 마지막 진입 프래그먼트와 첫 번째 이탈 프래그먼트만이 아니라 진입 및 이탈하는 모든 프래그먼트의
enterTransition및exitTranstion이 실행됩니다. (b/149344150) - 연기된 프래그먼트가 더 이상
CREATED상태에서 중단되지 않고 대신 다른 프래그먼트와 함께STARTED로 이동합니다. (b/129035555) - 연기되고 재정렬된 트랜잭션과 재정렬되지 않은 트랜잭션을 혼합할 때
FragmentManager가 순서에 상관없이 작업을 실행하는 문제가 수정되었습니다. (b/147297731) - 여러 프래그먼트를 동시에 표시하는 경우 프래그먼트를 연기할 때 중간 프래그먼트가 일시적으로 표시되는 문제가 더 이상 발생하지 않습니다. (b/37140383)
- 이제
FragmentManager는onAttachFragment()콜백 내에서findFragmentById()또는findFragmentByTag()를 호출할 때 올바른 프래그먼트를 반환합니다. (b/153082833) - 다른 프래그먼트를 대체하는 프래그먼트가 연기될 때 이 프래그먼트는 소멸되는 프래그먼트에서
onCreateView()를 더 이상 호출하지 않습니다. (b/143915710) - 이제 프레임워크
Transition과 AndroidXTransition인스턴스를 결합하려고 할 때 오류 메시지에 잘못된 전환이 있는 프래그먼트가 표시됩니다. (b/155574969)
동작 변경사항
- 이제 프래그먼트의
onCreate()수명 주기 메서드에서ActivityResultLauncher의launch()를 호출할 수 있습니다. (b/161464278) onCreate()이후에registerForActivityResult()를 호출하는 경우 이제 예외가 발생하여 이 호출이 허용되지 않음을 나타냅니다(이전에는 구성 변경 후에 결과를 전달하지 않았으며 이에 대한 알림도 표시되지 않았음). (b/162255449)- 이제
FragmentActivity는 Activity1.2.0-alpha08에 도입된OnContextAvailableListenerAPI를 사용하여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-alpha07 및 androidx.fragment:fragment-testing:1.3.0-alpha07가 출시되었습니다. 버전 1.3.0-alpha07에 포함된 커밋을 확인하세요.
새로운 기능
- 이제
FragmentScenario에서 항상 Fragment를RESUMED상태로 이동하는 대신 초기 수명 주기 상태를CREATED,STARTED또는RESUMED로 설정할 수 있습니다. (b/159662750) - 값을 반환할 수 있는 Kotlin의 구체화된 확장 메서드인
withFragment의 형태로onFragment의FragmentScenarioAPI에 대한 대안을 추가했습니다. 특히, 특정 블록에서 발생한 예외가 다시 발생합니다. (b/158697631)
동작 변경사항
- 이제
FragmentScenario는moveToState()를 구현하기 위해setMaxLifecycle()을 사용하여 모든 API 수준에서 일관된 동작을 보장하고 기본 Activity에서 Fragment의 상태를 분리합니다. (b/156527405) - 이제
ViewTreeSavedStateRegistryOwner에서 반환하는SavedStateRegistryOwner는 프래그먼트 뷰의 수명 주기에 연결됩니다. 이렇게 하면 프래그먼트 뷰와 동시에 상태가 저장되고 복원됩니다. (b/158503763)
버그 수정
- 이제 프래그먼트는 인셋 요청이 삭제되는 경우를 방지하기 위해
ViewCompat.requestApplyInsets()를 호출하기 전에 프래그먼트 뷰가 연결될 때까지 대기합니다. (b/158095749) - 이제
clearFragmentResultListener를 호출하면 수명 주기 관찰자가 적절히 삭제됩니다. (b/159274993)
버전 1.3.0-alpha06
2020년 6월 10일
androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06 및 androidx.fragment:fragment-testing:1.3.0-alpha06가 출시되었습니다. 버전 1.3.0-alpha06에 포함된 커밋을 확인하세요.
새로운 기능
FragmentActivity및Fragment의onAttachFragment()콜백이 지원 중단되었습니다. 더 유연한 대안을 제공하려고 새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-alpha05 및 androidx.fragment:fragment-testing:1.3.0-alpha05가 출시되었습니다. 버전 1.3.0-alpha05에 포함된 커밋을 확인하세요.
새로운 기능
Fragment내에서View를 사용할 때 수명 주기2.3.0-alpha03의ViewTreeViewModelStoreOwner및 SavedState1.1.0-alpha01의ViewTreeSavedStateRegistryOwner지원이 추가되었습니다. (aosp/1297993, aosp/1300264)
API 변경사항
- 이제
setFragmentResult()및setFragmentResultListener()API는 null이 아닌Bundle및FragmentResultListener를 각각 사용합니다. 이전에 설정한 결과 또는 리스너를 명시적으로 삭제하려면 새clearFragmentResult()및clearFragmentResultListener()메서드를 사용하세요. (b/155416778) - 람다를 사용하는
setFragmentResultListener()Kotlin 확장 프로그램이 이제inline으로 표시됩니다. (b/155323404)
동작 변경사항
- 이전에 지원 중단된
Fragment의startActivityForResult(),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-alpha04 및 androidx.fragment:fragment-testing:1.3.0-alpha04가 출시되었습니다. 버전 1.3.0-alpha04에 포함된 커밋을 확인하세요.
새로운 기능
FragmentManager의 새 API를 통해 두 프래그먼트 간에 결과를 전달하는 기능이 추가되었습니다. 이는 계층 구조 프래그먼트(상위/하위), DialogFragment 및 Navigation의 프래그먼트에서 작동하며 결과가STARTED이상인 경우에만 Fragment로 전송되도록 합니다. (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-alpha03 및 androidx.fragment:fragment-testing:1.3.0-alpha03가 출시되었습니다. 버전 1.3.0-alpha03에 포함된 커밋을 확인하세요.
API 변경사항
Fragment의prepareCall메서드는 현재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) - Fragment
1.2.4에서: 수명 주기와 뷰 수명 주기가 항상 동기화되므로observe호출 시this또는viewLifecycleOwner를 안전하게 사용할 수 있도록DialogFragment클래스에서FragmentLiveDataObserve린트 규칙이 사용 중지되었습니다. (b/151765086)
종속 항목 변경사항
- 프래그먼트는 Activity
1.2.0-alpha03에 따라 달라지며, 이는 Activity1.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-alpha02 및 androidx.fragment:fragment-testing:1.3.0-alpha02가 출시되었습니다. 버전 1.3.0-alpha02에 포함된 커밋을 확인하세요.
새로운 기능
- Fragment의 메서드를 재정의하지 않고
startActivityForResult()+onActivityResult()및requestPermissions()+onRequestPermissionsResult()흐름을 처리하도록 Activity1.2.0-alpha02에 도입된ActivityResultRegistryAPI에 대한 지원이 추가되었습니다. 이러한 흐름을 테스트하기 위한 후크도 제공됩니다. 업데이트된 활동에서 결과 가져오기를 참고하세요. (b/125158199)
API 변경사항
DialogFragment는 이제onCreateView()가 기본적으로 확장해야 하는 레이아웃을 표시하는@LayoutRes를 가져오는 생성자를 제공합니다. (b/150327080)onActivityCreated()메서드가 지원 중단되었습니다. 프래그먼트의 뷰를 터치하는 코드는onViewCreated()(onActivityCreated()직전에 호출됨)에서 실행되어야 하며 다른 초기화 코드는onCreate()에 있어야 합니다. 활동onCreate()가 완료되었을 때 콜백을 받으려면LifeCycleObserver가onAttach()내 활동의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-alpha01 및 androidx.fragment:fragment-testing:1.3.0-alpha01가 출시되었습니다. 버전 1.3.0-alpha01에 포함된 커밋을 확인하세요.
새로운 기능
onCreateView()에서 모든 뷰에LifecycleOwner를 반환하듯이 프래그먼트의viewLifecycleOwner를 반환할 것이므로 LIfecycle2.3.0-alpha01에 추가된ViewTreeLifecycleOwner.get(View)API에 대한 지원이 추가되었습니다. (aosp/1182955)
API 변경사항
- Fragment의
setRetainInstance()메서드가 지원 중단되었습니다. ViewModels가 도입되면서 개발자는 활동, 프래그먼트, 탐색 그래프와 연결할 수 있는 상태를 유지하기 위한 특정 API를 갖게 됩니다. 이를 통해 개발자는 보존된 상태가 아닌 일반 상태의 Fragment를 사용하고 별도로 보관하고자 하는 특정 상태를 유지할 수 있습니다. 또한, 단일 생성의 유용한 속성을 유지하면서 누수의 일반적인 원인을 피하고 보관되는 상태(즉,ViewModel의 생성자 및 생성자가 수신하는onCleared()콜백)의 파괴를 방지할 수 있습니다. (b/143911815) - ViewPager2
1.0.0의 출시로ViewPager와 상호작용하는FragmentPagerAdapter및FragmentStatePagerAdapter클래스가 지원 중단되었습니다. ViewPager에서 ViewPager2로 이전을 참고하세요. (b/145132715)
버그 수정
- 이제 Fragment ProGuard 규칙이 모든
Fragment인스턴스가 아닌 사용된 기본 생성자Fragment클래스만 올바르게 유지하여 Fragment1.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.5 및 androidx.fragment:fragment-testing:1.2.5가 출시되었습니다. 버전 1.2.5에 포함된 커밋을 확인하세요.
버그 수정
- 이제 프래그먼트의 수명 주기 동작을 미러링하여
onSaveInstanceState()가 호출되기 전에 프래그먼트의getViewLifecycleOwner()가 중지됩니다. 이전에는 Fragment1.3.0-alpha04에서 출시되었습니다. (b/154645875) - 이제 프래그먼트에서
setMenuVisibility(false)를 호출하면 하위 프래그먼트에서 제공하는 메뉴의 공개 상태가 올바르게 변경됩니다. 이전에는 Fragment1.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.4 및 androidx.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.3 및 androidx.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.2 및 androidx.fragment:fragment-testing:1.2.2가 출시되었습니다. 버전 1.2.2에 포함된 커밋을 확인하세요.
새로운 린트 검사
- 린트는
onCreateView(),onViewCreated(),onActivityCreated()에서OnBackPressedDispatcher를 호출하기 위해LifecycleOwner로viewLifecycleOwner을 사용하도록 제안합니다. (b/142117657) fragment-testing아티팩트를 사용할 때 올바른debugImplementation을 사용하고 있는지 확인하는 새로운 린트 검사가 추가되었습니다. (b/141500106)- 이제 Fragment에서 연결된
require___()메서드를 사용하여get및require등가물을 포함하는 모든 Fragment API에 대해checkNotNull(get___()),requireNonNull(get___())또는get___()!!대신 보다 자세한 오류 메시지를 제공합니다. (aosp/1202883)
버그 수정
- R8 경고를 피하기 위해 Fragment ProGuard 파일을 수정했습니다. (b/148963981)
observe의livedata-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.1 및 androidx.fragment:fragment-testing:1.2.1가 출시되었습니다. 버전 1.2.1에 포함된 커밋을 확인하세요.
버그 수정
- 이제
Class인스턴스(또는 Kotlin 구체화된 버전)를 사용하는add및replace메서드를 통해 추가된 프래그먼트는 ProGuard에서 보관하는 기본 생성자를 유지합니다. (b/148181315) FragmentStatePagerAdapter및FragmentPagerAdapter는 더 이상finishUpdate()실행 시FragmentManager에서 발생시키는 예외를 포착하지 않습니다. (aosp/1208711)FragmentManager.findFragment()가<fragment>태그를 통해 추가된 프래그먼트에서 작동하지 않는 문제가 해결되었습니다. (b/147784323)- 이제
<fragment>태그를 사용하여 확장된 프래그먼트는 항상 레이아웃에서onCreate()전에onInflate()를 호출합니다. (aosp/1215856) - 활동이 이미 파괴된 경우
FragmentManager인스턴스에서toString()을 호출해도NullPointerException을 야기하지 않습니다. (b/148189412)
종속 항목 변경사항
- Fragment
1.2.1은 현재 Lifecycle ViewModel SavedState2.2.0에 종속됩니다.
버전 1.2.0
버전 1.2.0
2020년 1월 22일
androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0 및 androidx.fragment:fragment-testing:1.2.0가 출시되었습니다. 버전 1.2.0에 포함된 커밋을 확인하세요.
1.1.0 이후 중요 변경사항
- FragmentContainerView:
FragmentContainerView는FrameLayout또는 다른 레이아웃 사용을 대체하여 동적으로 추가된 프래그먼트에 강력히 권장되는 컨테이너입니다.<fragment>태그와 동일한class,android:name및 선택적android:tag도 지원하지만 일반FragmentTransaction을 사용하여<fragment>에서 사용하는 맞춤 코드 경로 대신 이 초기 프래그먼트를 추가합니다. onDestroyView()타이밍: 프레임워크는 이제onDestroyView()을 호출하기 전에 종료 애니메이션, 종료 프레임워크 전환 및 종료 AndroidX 전환(전환1.3.0을 사용하는 경우)이 완료될 때까지 기다립니다.- 클래스 기반
add()및replace():FragmentTransaction에add()및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()지원 중단: Fragment의getFragmentManager()및requireFragmentManager()메서드가 지원 중단되었으며 프래그먼트가 추가되는 null이 아닌FragmentManager를 반환하는 단일getParentFragmentManager()메서드로 대체되었습니다(isAdded()를 사용하여 호출이 안전한지 확인할 수 있음).FragmentManager.enableDebugLogging()지원 중단: 정적FragmentManager.enableDebugLogging메서드가 지원 중단되었습니다. 이제 FragmentManager는FragmentManager태그에서Log.isLoggable()을 준수합니다. 이에 따라 앱을 다시 컴파일하지 않고도DEBUG또는VERBOSE로깅을 사용 설정할 수 있습니다.
알려진 문제
FragmentContainerView의class또는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-rc05 및 androidx.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-rc04 및 androidx.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-rc03 및 androidx.fragment:fragment-testing:1.2.0-rc03가 출시되었습니다. 버전 1.2.0-rc03에 포함된 커밋을 확인하세요.
버그 수정
- 종료 애니메이션/전환이 실행되는 동안
findFragmentById()/findFragmentByTag()에서 여전히 삭제된 프래그먼트를 반환하는 동작 변경사항이 수정되었습니다. (b/143982969, aosp/1167585) - 이제 포함된 활동이
onSaveInstanceState()를 호출할 때 하위 프래그먼트가 상위 프래그먼트 전에 올바로 중지됩니다. (b/144380645) - 숨겨진 프래그먼트를 표시한 후 뷰가
INVISIBLE로 잘못 표시되는 문제가 해결되었습니다. (b/70793925) - 프래그먼트 공유 요소 전환이 이제 회전 또는 크기가 조정된 뷰를 처리합니다. (b/142835261)
문서 업데이트
setUserVisibleHint()관련 지원 중단이 문서로 명확히 설명되었습니다. (b/143897055)FragmentFactory를 설정하면 하위 FragmentManager에도 영향이 있다는 것을 더 확실히 알리기 위해setFragmentFactory()및getFragmentFactory()에 관한 문서를 개선했습니다. (aosp/1170095)
종속 항목 변경사항
- 프래그먼트가 이제 Lifecycle
2.2.0-rc03, Lifecycle ViewModel SavedState1.0.0-rc03, Activity1.1.0-rc03에 종속됩니다.
버전 1.2.0-rc02
2019년 11월 7일
androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02 및 androidx.fragment:fragment-testing:1.2.0-rc02가 출시되었습니다. 버전 1.2.0-rc02에 포함된 커밋을 확인하세요.
버그 수정
- Kotlin에서
onCreateView(),onViewCreated()또는onActivityCreated()(Fragment1.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-rc01 및 androidx.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)
버그 수정
- 이제
DialogFragment의onDismiss및onCancel콜백은 실행될 때 전달받은DialogInterface가 null이 아니며getDialog()가 null이 아닌 값을 반환한다는 것을 보장합니다. (b/141974033) - 이제
FragmentContainerView는class또는android:name으로 정의된 프래그먼트를 확장의 일부로 추가하여 이후에findFragmentById()및findFragmentByTag()가 즉시 작동하도록 합니다. (b/142520327) - 저장 중인 상태로 인한
FragmentContainerView의IllegalStateException이 수정되었습니다. (b/142580713) FragmentContainerView클래스가 난독화될 때FragmentContainerView의UnsupportedOperationException이 수정되었습니다. b/142657034를 참조하세요.
알려진 문제
FragmentContainerView의class또는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-beta02 및 androidx.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-beta01 및 androidx.fragment:fragment-testing:1.2.0-beta01가 출시되었습니다. 버전 1.2.0-beta01에 포함된 커밋을 확인하세요.
새로운 기능
FragmentContainerView는android:name및 선택적android:tagXML 속성 지원의 추가를 통해 초기 프래그먼트를 추가할 수 있습니다.<fragment>태그와 달리FragmentContainerView는 이면에서 내부적으로 일반FragmentTransaction을 사용하여 초기 프래그먼트를 추가하므로FragmentContainerView의FragmentTransaction작업을 추가로 실행하고 레이아웃에 뷰 결합을 사용할 수 있습니다. (b/139830628, b/141177981)- 이제 프래그먼트에는
<fragment>를FragmentContainerView로 바꾸도록 빠른 수정을 제공하는 린트 경고가 포함됩니다. b/139830056을 참조하세요.
버그 수정
androidx.transition을 사용할 때ClassCastException이 수정되었습니다. (b/140680619)- Transition
1.3.0-beta01을 사용할 때 프래그먼트는 이제onDestroyView()를 전달하기 전에androidx.transition전환(Fragment1.2.0-alpha03및 Fragment1.2.0-alpha02에서 각각 수정된 프레임워크 전환 및 애니메이션 외에도)이 완료될 때까지 기다립니다. (aosp/1119841) - Transition
1.3.0-beta01을 사용할 때 프래그먼트는 이제 동일한 컨테이너에서 새로운 전환/애니메이션을 시작하기 전에androidx.transition전환을 적절하게 취소합니다. (aosp/1119841) - API 17 이하에서
FragmentContainerView사용 시 프래그먼트의 루트 뷰에서androidx.transition전환을 사용할 때 발생하는 문제가 수정되었습니다. (b/140361893) fragment-testing아티팩트는 이제 AndroidX Test1.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-alpha04 및 androidx.fragment:fragment-testing:1.2.0-alpha04가 출시되었습니다. 버전 1.2.0-alpha04에 포함된 커밋을 확인하세요.
API 변경사항
Fragment의getFragmentManager()및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-alpha03 및 androidx.fragment:fragment-testing:1.2.0-alpha03가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
API 변경사항
FragmentContainerView는 이제final입니다. b/140133091을 참조하세요.
버그 수정
- 이제
FragmentContainerView는 백 스택에서 프래그먼트를 팝할 때 그리기 순서를 올바르게 역순으로 정렬합니다. (b/139104187) - 프래그먼트를 표시하는 동시에 새 프래그먼트를 추가할 때 잘못된 애니메이션이 실행되는 문제가 수정되었습니다. (b/111659726)
- 프래그먼트는 이제
onDestroyView()를 전달하기 전에 전환(Fragment1.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-alpha02 및 androidx.fragment:fragment-testing:11.2.0-alpha02 버전이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
- 이제
SavedStateViewModelFactory가by viewModels(),by activityViewModels(),ViewModelProvider생성자 또는ViewModelProviders.of()를Fragment와 함께 사용할 때 사용되는 공장 기본값입니다. (b/135716331) FragmentTransaction의setTransition과 함께TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE,TRANSIT_FRAGMENT_FADE를 사용할 때 기본 애니메이션이 Android 10 기기의 활동에서 사용하는 애니메이션과 일치하도록 업데이트되었습니다. (aosp/1012812, aosp/1014730)
API 변경사항
FrameLayout사용을 대체하는 등 동적으로 추가된 프래그먼트에 강력히 권장되는 컨테이너로FragmentContainerView를 도입함으로써 애니메이션 z-순서 문제와 프래그먼트로의 창 인셋 전달 문제가 수정되었습니다. (b/37036000, aosp/985243, b/136494650)- 프래그먼트에 의해 확장되는 뷰에서 포함 프래그먼트를 검색하는 정적
FragmentManager.findFragment(View)메서드가 추가되었습니다. 또한 Kotlin 확장은fragment-ktx에서도 사용할 수 있습니다. (aosp/1090757) FragmentTransaction에add()및replace()의 새 오버로드가 추가되었습니다. 이러한 오버로드는 인수의Class<? extends Fragment>및 선택적Bundle을 가져옵니다. 이러한 메서드에서는FragmentFactory를 사용하여 추가할 프래그먼트의 인스턴스를 구성합니다. 또한 구체화된 유형(예:fragmentTransaction.replace<YourFragment>(R.id.container))을 사용하는 Kotlin 확장이fragment-ktx에 추가되었습니다. (b/126124987)@MainThread주석이Fragment수명 주기 콜백에 추가되었습니다. (b/127272564)FragmentTransaction및FragmentManager.BackStackEntry의 탐색경로 제목 관련 API가 지원 중단되었습니다. (b/138252944)FragmentTransaction의setTransitionStyle메서드가 지원 중단되었습니다. 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에서: 현재 항목을 삭제할 때FragmentPagerAdapter및FragmentStatePagerAdapter에서 발생하는 비정상 종료 문제가 수정되었습니다. (b/137209870) - 이제 프래그먼트는
onDestroyView()를 전달하기 전에 애니메이션이 완료될 때까지 기다립니다. (b/136110528) - 이제 상위 프래그먼트를 애니메이션 처리할 때 하위 프래그먼트와 그 하위 요소의 프래그먼트 애니메이션이 올바르게 처리됩니다. (b/116675313)
- 공유 요소 전환을 사용하고 팝과 추가 작업을 결합할 때 발생하는
NullPointerException이 수정되었습니다. (b/120507394) - Robolectric 테스트에서
FragmentPagerAdapter및FragmentStatePagerAdapter를 사용할 때IllegalStateException관련 해결 방법이 추가되었습니다. b/137201343을 참조하세요.
버전 1.2.0-alpha01
2019년 7월 2일
androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01 및 androidx.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.0 및 androidx.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()가 포함되어 있습니다. - 최대 수명 주기: 이제
FragmentTransaction의setMaxLifecycle()을 호출하여 프래그먼트의 최대 수명 주기 상태를 설정할 수 있습니다. 이 함수가 이제 지원 중단된setUserVisibleHint()를 대체합니다.FragmentPagerAdapter및FragmentStatePagerAdapter에는 새 생성자가 있습니다. 이 생성자를 통해 새로운 동작으로 전환할 수 있습니다. - FragmentActivity LayoutId 생성자: 이제
FragmentActivity의 서브클래스는R.layoutID를 사용하는FragmentActivity의 생성자를 선택적으로 호출할 수 있으며 이 동작은onCreate()의setContentView()를 호출하는 대신 콘텐츠 뷰로 설정해야 하는 레이아웃을 나타냅니다. 그렇지만 서브클래스에 인수가 없는 생성자가 있어야 한다는 요구사항은 변경되지 않습니다. - Fragment LayoutId 생성자: 이제
Fragment의 서브클래스는R.layoutID를 사용하는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-rc04 및 androidx.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-rc03 및 androidx.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-rc02 및 androidx.fragment-testing:fragment:1.1.0-rc02가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
버그 수정
- 현재 항목을 삭제할 때
FragmentPagerAdapter및FragmentStatePagerAdapter에서 발생하는 비정상 종료 문제가 수정되었습니다. b/137209870을 참조하세요.
버전 1.1.0-rc01
2019년 7월 2일
androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01 및 androidx.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-beta01 및 androidx.fragment:fragment-testing:1.1.0-beta01가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
버그 수정
- 이제 중첩된 프래그먼트의
androidx.lifecycle.Lifecycle콜백(특히STARTED,RESUMED,PAUSED,STOPPED및DESTROYED관련)이 적절하게 중첩됩니다. (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-alpha09 및 androidx.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-alpha08 및 androidx.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을 사용하는FragmentFactoryinstantiate메서드(이전에 지원 중단됨)가 삭제되었습니다. (aosp/953856) - 브레이킹 체인지:
FragmentPagerAdapter및FragmentStatePagerAdapter에서RESUME_ONLY_CURRENT_FRAGMENT및USE_SET_USER_VISIBLE_HINT상수의 이름이 각각BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT및BEHAVIOR_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-alpha07 및 androidx.fragment:fragment-testing:1.1.0-alpha07가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
- 이제
FragmentTransaction의setMaxLifecycle()을 호출하여 프래그먼트의 최대 수명 주기 상태를 설정할 수 있습니다. 이 함수가 이제 지원 중단된setUserVisibleHint()를 대체합니다.FragmentPagerAdapter및FragmentStatePagerAdapter에는 새 생성자가 있습니다. 이 생성자를 통해 새로운 동작으로 전환할 수 있습니다. b/129780800을 참조하세요.
API 변경사항
FragmentScenario의moveToState(STARTED)는 이제 API 24 이상인 기기에서만 호출할 수 있습니다. b/129880016을 참조하세요.
동작 변경사항
- (b/129907905)의 결과로 백 스택의 프래그먼트는 호스팅 활동이 다시 생성될 때
onCreateView()에 관한 콜백을 가져오지 않습니다. 이제 프래그먼트가 표시 상태가 될 때만(즉, 백 스택에서 팝될 때만)onCreateView()가 호출됩니다.
버그 수정
- XML의
<fragment>태그와FragmentActivity또는AppCompatActivity의contentLayoutId생성자를 사용할 때 발생하는 문제가 수정되었습니다. (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-alpha06 및 androidx.fragment:fragment-testing:1.1.0-alpha06가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
- 이제 FragmentManager에 의해 발생되는 예외 메시지에 프래그먼트의 이름이 포함됩니다. (b/67759402)
API 변경사항
- 이제
Fragment및FragmentActivity에는@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-alpha05 및 androidx.fragment:fragment-testing:1.1.0-alpha05가 출시되었습니다. 이 버전에 포함된 커밋의 전체 목록은 여기에서 확인할 수 있습니다.
새로운 기능
- 이제
@ContentView주석 조회가 캐시됩니다. (b/123709449)
동작 변경사항
- 이제 다른 FragmentManager에 연결된 Fragment를 사용하여
remove(),hide(),show(),detach(),setPrimaryNavigationFragment()를 호출하면 자동으로 실패하지 않고IllegalStateException이 발생합니다. (aosp/904301)
버그 수정
- 이제
FragmentActivity의onNewIntent가@CallSuper로 올바르게 표시됩니다. (b/124120586) getDialog().dismiss()또는getDialog().cancel()을 사용할 때DialogFragment의onDismiss()가 두 번 호출될 수 있는 문제가 수정되었습니다. (b/126563750)
버전 1.1.0-alpha04
2019년 2월 7일
androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04 및 androidx.fragment:fragment-testing 1.1.0-alpha04 버전이 출시되었습니다.
새로운 기능
- 확장되어야 하는 레이아웃 XML 파일을 나타낼 수 있는
@ContentView클래스 주석 지원이onCreateView()재정의의 대안으로 추가되었습니다.onViewCreated()에서 관련 작업을 살펴보는 것이 좋습니다. (aosp/837619) - 이제
fragment-testing은androidx.test:core-ktx1.1.0 안정화 버전에 종속됩니다. (b/121209673) - 이제
FragmentScenario와 함께openActionBarOverflowOrOptionsMenu를 사용하여 프래그먼트 호스팅된 옵션 메뉴를 테스트할 수 있습니다. (b/121126668)
API 변경사항
@NonNull Bundle을 반환하거나IllegalStateException을 발생시키는requireArguments()메서드가 추가되었습니다. (b/121196360)getLifecycle(),getViewLifecycleOwner(),getViewLifecycleOwnerLiveData()는 재정의되어서는 안 되며 향후 버전에서 완료될 예정이라는 참고사항을 추가했습니다. 현재 이 메서드를 재정의하려면 기능 요청을 제출하세요. (aosp/880714)getViewModelStore()는 재정의해서는 안 되며 향후 출시에서 완료될 예정이라는 메모가 추가되었습니다. 현재 이 메서드를 재정의하려면 기능 요청을 제출하세요. (aosp/880713)- 이전 Fragment 버전과의 바이너리 호환성 문제가 수정되었습니다. (aosp/887877, aosp/889834)
버그 수정
null을setTargetFragment()에 전달할 때 타겟 프래그먼트가 올바르게 삭제됩니다. (aosp/849969)onDestroy()호출에서 또는 호출된 이후에 타겟 프래그먼트를 때때로 사용할 수 없던 문제가 수정되었습니다. (b/122312935)- 이제 DialogFragment의 onDismiss()가
onDestroy()전에 호출됩니다. (aosp/874133, aosp/890734)
버전 1.1.0-alpha03
2018년 12월 17일
새로운 기능
- 프래그먼트는 이제
BundleSavedStateRegistryOwner를 구현하고 새로 출시된 SavedState 라이브러리에 종속됩니다. (aosp/824380) - 포함 활동과 연결된 ViewModel을 검색하도록
by activityViewModelsKotlin 속성 위임이 추가되었습니다. (b/119050253) ViewModelStoreOwner를 가져오는 선택적 람다 메서드를 사용하도록by viewModelsKotlin 속성 위임이 확장되었습니다. 이러한 확장을 통해val viewModel: MyViewModel by viewModels(::requireParentFragment)와 같은 코드를 사용하여 상위 Fragment 또는 다른 맞춤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인스턴스를 전달하는 대신 Fragment 생성에 람다를 사용할 수 있습니다. (aosp/812913)
버그 수정
- 백 스택에서 중첩된 Fragment를 사용할 때 발생하는 IllegalStateException을 수정했습니다. (b/119256498)
FragmentFactory와 함께FragmentScenario.recreate()를 사용할 때 발생하는 비정상 종료 문제가 수정되었습니다. (aosp/820540)- Fragment를 삭제한 이후에 타겟 Fragment에 액세스할 수 없던 문제를 해결했습니다. (aosp/807634)
버전 1.1.0-alpha01
2018년 11월 5일
이 버전은 androidx.test:core API를 기반으로 빌드되는 FragmentScenario 및 fragment-testing 아티팩트의 최초 출시입니다. 자세한 내용은 Fragment 테스트 문서를 참조하세요.
새로운 기능
- Fragment를 독립적으로 테스트하기 위한 새 FragmentScenario 클래스
- 이제
FragmentManager에서FragmentFactory를 설정하여 새 Fragment 인스턴스를 인스턴스화하는 방법을 제어할 수 있습니다. - Fragment에서 ViewModel을 검색하기 위한 새로운
by viewModels()Kotlin 속성 대리자가 추가되었습니다. - 대기 중인 입력 이벤트(예: 클릭)가 이제 Fragment의
onStop()에서 취소됩니다.
API 변경사항
- Fragment API 노출 영역에서 null 허용 여부 주석을 크게 확장했습니다.
버그 수정
- LiveData 내에서 Fragment 작업이 실패하는 문제를 수정했습니다. (b/77944637)
알려진 문제
- Fragment가 FragmentManager에서 삭제된 후에는 타겟 Fragment에 액세스할 수 없습니다.
fragment-testing은 정확한androidx.test:core:1.0.0대신androidx.test:core:1.0.0-beta01에 종속됩니다.