https://developer.android.com/jetpack/androidx/releases/fragment
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"
}
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
容器来存储动态添加的 Fragment,而不要使用 FrameLayout
或其他布局。FragmentContainerView 同样支持 class
、android:name
和可选的 android:tag
(这与 <fragment>
标记相同),但会使用常规的 FragmentTransaction
来添加此初始 Fragment,而不会添加 <fragment>
使用的自定义代码路径。onDestroyView()
调用时机:Fragment 现在会等到退出动画、退出框架转换和退出 AndroidX 转换(使用 Transition 1.3.0
时)完成后再调用 onDestroyView()
。add()
和 replace()
:在 FragmentTransaction
中添加了 add()
和 replace()
的新重载,这些重载采用 Class<? extends Fragment>
和 Bundle
(可选)参数。这些方法使用您的 FragmentFactory
来构造要添加的 Fragment 的实例。此外,还向 fragment-ktx
中添加了使用具体化类型(例如 fragmentTransaction.replace<YourFragment>(R.id.container)
)的 Kotlin 扩展程序。by viewModels()
、by activityViewModels()
、ViewModelProvider
构造函数或 ViewModelProviders.of()
与 Fragment 一起使用时,会使用 SavedStateViewModelFactory
作为默认出厂设置。onCreateView()
、onViewCreated()
或 onActivityCreated()
观察 LiveData
时使用 getViewLifecycleOwner()
。getFragmentManager()
:弃用了关于 Fragment 的 getFragmentManager()
和 requireFragmentManager()
方法,并替换为单个 getParentFragmentManager()
方法,后者会返回添加了 Fragment 的非 null FragmentManager
(您可以使用 isAdded()
来确定是否可以安全调用该方法)。FragmentManager.enableDebugLogging()
:弃用了静态 FragmentManager.enableDebugLogging
方法。FragmentManager 现在遵循 FragmentManager
标记的 Log.isLoggable()
,以允许您启用 DEBUG
或 VERBOSE
日志记录,而无需重新编译应用。已知问题
FragmentContainerView
上的 class
或 android:name
属性引用的 Fragment,需要您为每个 Fragment 类手动添加保留规则。FragmentContainerView
使用 class
或 android:name
在 XML 文件中添加 NavHostFragment
时,您无法在 Activity 的 onCreate()
中使用 findNavController()
。手机扫一扫
移动阅读更方便
你可能感兴趣的文章