返回

告别 Fragment 过时的 API:拥抱现代 Android

Android

碎片化的历史演变

Fragment 是 Android 开发中用于模块化和管理 UI 的基本构建块。它们最初是 Android 3.0(API 11)中引入的,从此以后一直是构建复杂 UI 的关键工具。

然而,随着 Android 平台的成熟,Fragment 的某些方面已经过时。一些 API 已被认为不安全或容易出错,因此已被弃用或删除。

已弃用的 Fragment API

以下是已弃用的 Fragment API:

  • onActivityCreated() :此方法已被 onViewCreated() 取代,后者更适合在视图层次结构创建后执行操作。
  • startActivityForResult() :此方法已被 Fragment#startActivityForResult(Intent, int, Bundle) 取代,后者允许您传递请求代码和附加参数。
  • setTargetFragment() :此方法已被 requireActivity().getSupportFragmentManager().setFragmentResultListener() 取代,后者提供了更灵活和类型安全的通信方式。
  • setRetainInsInstance() :此方法已被 Fragment#setRetainInstance(boolean) 取代,后者提供了一种更简单且更可靠的方式来保留 Fragment 状态。

替代方案

对于每个已弃用的 API,都有一个或多个替代方案可用。这些替代方案通常更安全、更易于使用,并且更符合现代 Android 开发实践。

  • onViewCreated() 取代了 onActivityCreated() ,它更适合在视图层次结构创建后执行操作。
  • Fragment#startActivityForResult(Intent, int, Bundle) 取代了 startActivityForResult() ,它允许您传递请求代码和附加参数。
  • requireActivity().getSupportFragmentManager().setFragmentResultListener() 取代了 setTargetFragment() ,它提供了一种更灵活和类型安全的通信方式。
  • Fragment#setRetainInstance(boolean) 取代了 setRetainInsInstance() ,它提供了一种更简单且更可靠的方式来保留 Fragment 状态。

弃用 API 的影响

弃用 Fragment API 可能会对您的应用程序产生重大影响。如果您仍在使用这些过时的 API,那么强烈建议您迁移到替代方案。过时的 API 可能在未来版本中不再受支持,并可能导致安全漏洞或其他问题。

迁移到替代方案

迁移到替代方案通常很简单。只需更新您的代码以使用新的 API 即可。在大多数情况下,您只需将一个方法调用替换为另一个方法调用。

例如,要将 onActivityCreated() 替换为 onViewCreated() ,只需执行以下操作:

@Override
public void onViewCreated(@Nullable Bundle savedInstanceState, @Nullable View view) {
    super.onViewCreated(savedInstanceState, view);
    // 代码
}

结论

Fragment 是 Android 开发中强大的工具,但它们的某些 API 已被弃用。迁移到替代方案非常重要,以确保您的应用程序安全、可靠且符合最新的 Android 最佳实践。通过拥抱现代 Android,您可以构建更加健壮且持久的应用程序。