gpt4 book ai didi

android - android.app.Fragment 和 android.support.v4.app.Fragment 用法的区别

转载 作者:行者123 更新时间:2023-11-29 01:18:40 27 4
gpt4 key购买 nike

首先,我知道这个投票率很高的问题的存在 -

Difference between android.app.Fragment and android.support.v4.app.Fragment

但是,这里的答案更多地讨论了何时使用它们(即支持 Fragment 用于 API 4+ 和应用程序 Fragment 用于 API 11+),而不是它们在行为和用法上的差异。

我想知道在开发支持两​​者的最小 SDK(例如 16 岁以上)时使用这两种方法的优点或缺点是什么,以及应用程序支持的新功能是什么 Fragment s 且不支持 Fragment

最佳答案

我无法告诉您每个 Google 更改背后的逻辑,但根据位于 https://developer.android.com/topic/libraries/support-library/packages#v4-fragment 的 Google 文档:

The v13 support library provides a FragmentCompat class. The v4 Fragment class is a standalone class that provides bugfixes which were added in later platform versions, whereas the v13 FragmentCompat class provides compatibility shims for the framework implementation of the Fragment class.

总而言之,您基本上是通过使用支持版本来修复错误。

https://developer.android.com/reference/android/support/v4/app/Fragment它说:

The main differences when using this support version instead of the framework version are:

  • Your activity must extend FragmentActivity
  • You must call getSupportFragmentManager() to get the FragmentManager

使用在线差异工具,我可以看到支持库 28.0.0-alpha1 与框架 API 级别 28 的 API 存在以下差异(并非详尽无遗):

  • 在支持版本中 getActivity 返回一个 FragmentActivity 而不是 Activity 并且支持版本文档解释了如果 fragment 与上下文相关联
  • getReenterTransition 等转换上运行的函数在支持版本中返回 Object 而不是 ObjectTransition
  • 支持版本增加了以下功能:getLifecyclegetViewModelStoreonCreateAnimationrequireActivity requireContextrequireFragmentManagerrequireHost
  • 采用Activity 参数的onInflate 方法已弃用

我认为 FragmentManagerFragmentTransaction 没有明显区别,除了:

  • 在支持版本中,setAllowOptimization 被弃用,作者说 setReorderingAllowed 是替代品

总结一下我看到的唯一主要区别是,似乎支持 Fragment 不需要与 Activity 相关联,但框架 Fragment 似乎需要相关联的 Activity才能正常运行。

关于android - android.app.Fragment 和 android.support.v4.app.Fragment 用法的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38164116/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com