Fragment 1.2.0 更新记录

 

1.官方地址

  https://developer.android.com/jetpack/androidx/releases/fragment

 

2.引入方法

复制代码
 1 dependencies {
 2     def fragment_version = "1.2.5"
 3 
 4     // Java language implementation
 5     implementation "androidx.fragment:fragment:$fragment_version"
 6     // Kotlin
 7     implementation "androidx.fragment:fragment-ktx:$fragment_version"
 8     // Testing Fragments in Isolation
 9     debugImplementation "androidx.fragment:fragment-testing:$fragment_version"
10 }
复制代码

 

3.版本 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 容器来存储动态添加的 Fragment,而不要使用 FrameLayout 或其他布局。FragmentContainerView 同样支持 classandroid: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 扩展程序。
  • Lifecycle ViewModel SavedState 集成:现在将 by viewModels()by activityViewModels()ViewModelProvider 构造函数或 ViewModelProviders.of() 与 Fragment 一起使用时,会使用 SavedStateViewModelFactory 作为默认出厂设置。
  • 新的 Lint 检查:添加了新的 Lint 检查,以确保您在从 onCreateView()onViewCreated() 或 onActivityCreated() 观察 LiveData 时使用 getViewLifecycleOwner()
  • 弃用 getFragmentManager():弃用了关于 Fragment 的 getFragmentManager() 和 requireFragmentManager() 方法,并替换为单个 getParentFragmentManager() 方法,后者会返回添加了 Fragment 的非 null FragmentManager(您可以使用 isAdded() 来确定是否可以安全调用该方法)。
  • 弃用 FragmentManager.enableDebugLogging():弃用了静态 FragmentManager.enableDebugLogging 方法。FragmentManager 现在遵循 FragmentManager 标记的 Log.isLoggable(),以允许您启用 DEBUG 或 VERBOSE 日志记录,而无需重新编译应用。

已知问题

  • ProGuard 不会自动保留仅通过 FragmentContainerView 上的 class 或 android:name 属性引用的 Fragment,需要您为每个 Fragment 类手动添加保留规则。
  • 通过 FragmentContainerView 使用 class 或 android:name 在 XML 文件中添加 NavHostFragment 时,您无法在 Activity 的 onCreate() 中使用 findNavController()
posted @   f9q  阅读(545)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示