ChatGPT解决这个技术问题 Extra ChatGPT

我在处理片段时遇到了两个被多次使用的东西 ActivityFragmentActivity。我想知道这两者之间有什么区别,因为当我将 Activity 更改为 FragmentActivity 时,它对应用程序没有影响。


A
Alex Lockwood

FragmentActivity 是为 Android Support Package 构建的 Activity 的子类。

FragmentActivity 类添加了几个新方法以确保与旧版本的 Android 兼容,但除此之外,两者之间并没有太大区别。只需确保将对 getLoaderManager()getFragmentManager() 的所有调用分别更改为 getSupportLoaderManager()getSupportFragmentManager()


嘿,我没有更改对 getSupportLoaderManager() 和 getSupportFragmentManager() 的调用。但它仍然可以正常工作。
这就是它如此危险的原因:P。 FragmentActivityActivity 继承 getLoaderManagergetFragmentManager 方法,因此编译器不会抱怨。您也可能导入了不正确的 LoaderManagerFragmentManager 类。确保您从支持包 (android.support.v4.app) 导入这些类,不是 Android SDK (android.app)。
我们是否可以说,如果我们想在 android 2.x 版本中使用 FragmentActivity ,我们需要使用 FragmentActivity ,而对于支持 Fragment 的版本,我们需要使用 Activity 。
我觉得你说的是对的。但为了 100% 清楚...如果您使用 android.app.Fragment,请使用 Activity;如果您使用 android.support.v4.app.Fragment,请使用 FragmentActivity。切勿将 android.support.v4.app.Fragment 附加到 android.app.Activity,因为这将导致引发异常。
首先尝试 this tutorial(如何在应用程序中使用 Fragments)。然后,继续 this tutorial(如何使用支持包中的 Fragment)。开发者网站上的 documentation 也值得一读。
S
Samuel Peter

FragmentActivitysupport library 的一部分,而 Activity 是框架的默认类。它们在功能上是等效的。

您应该始终使用 FragmentActivityandroid.support.v4.app.Fragment 而不是平台默认的 Activityandroid.app.Fragment 类。使用平台默认值意味着您依赖于您正在运行的设备中使用的任何片段实现。这些通常已有多年历史,并且包含已在支持库中修复的错误。


注意:自版本 26.xx 起,支持库的 minSdkVersion 为 14