首先,我知道这个高度投票的问题的存在 -
Difference between android.app.Fragment and android.support.v4.app.Fragment
但是,这里的答案更多地讨论了何时使用它们(即支持API 4+的Fragment
和API 11+的应用Fragment
),而不是它们的行为和用途
我想知道在开发支持两者的最小SDK(例如16+)时使用的优点和缺点是什么,以及app {{1}支持的新功能有哪些? } s而不是支持Fragment
s。
答案 0 :(得分:1)
我无法告诉您每个Google更改背后的逻辑,但根据https://developer.android.com/topic/libraries/support-library/packages#v4-fragment上的Google文档:
v13支持库提供了FragmentCompat类。 v4 片段类是一个独立的类,可提供 在更高的平台版本中添加,而v13 FragmentCompat类 为框架的实现提供兼容性填充 片段类。
因此,总而言之,使用支持版本基本上可以修复错误。
在https://developer.android.com/reference/android/support/v4/app/Fragment处说:
使用此支持版本而不是 框架版本为:
- 您的活动必须扩展FragmentActivity
- 您必须调用getSupportFragmentManager()才能获取FragmentManager
使用在线差异工具,从支持库28.0.0-alpha1到框架API级别28,我可以看到API中的以下差异(并非详尽无遗):
getActivity
中返回FragmentActivity
而不是Activity
,并且支持版本docs解释说,如果片段与上下文相关联,则该函数可能返回null。getReenterTransition
之类的过渡上运行的函数在支持版本中返回Object
,而不是ObjectTransition
getLifecycle
,getViewModelStore
,onCreateAnimation
,requireActivity
,requireContext
,requireFragmentManager
,{{1 }} requireHost
参数的onInflate
方法除了以下内容外,我发现Activity
或FragmentManager
方面没有显着差异:
FragmentTransaction
,作者说setAllowOptimization
是替代版本总结一下,我看到的唯一主要区别是,似乎支持setReorderingAllowed
不需要与Fragment
关联,但是框架Fragment似乎需要关联的Activity才能正常运行。