我正在处理碎片,遇到了两个东西
Activity
和FragmentActivity
,它们都被多次使用。我想知道这两者之间是否有任何区别,因为当我用FragmentActivity
替换Activity
时,应用程序没有发生任何变化。Activity
和FragmentActivity
,它们都被多次使用。我想知道这两者之间是否有任何区别,因为当我用FragmentActivity
替换Activity
时,应用程序没有发生任何变化。FragmentActivity
是Activity
的子类,专为Android支持库而设计。
FragmentActivity
类添加了一些新方法,以确保与旧版本的Android兼容,但除此之外,它们之间实际上没有太大的区别。只需确保将所有对getLoaderManager()
和getFragmentManager()
的调用更改为相应的getSupportLoaderManager()
和getSupportFragmentManager()
即可。
FragmentActivity
是支持库的一部分,而Activity
是框架的默认类。它们在功能上是等效的。
您应该始终使用FragmentActivity
和android.support.v4.app.Fragment
而不是平台默认的Activity
和android.app.Fragment
类。使用平台默认值意味着您依赖于在您运行设备上使用的片段实现。这些通常是多年前的版本,并包含已在支持库中修复的错误。
FragmentActivity
继承了Activity
类的getLoaderManager
和getFragmentManager
方法,因此编译器不会抱怨。很有可能您正在导入错误的LoaderManager
和FragmentManager
类。请确保您从支持包(android.support.v4.app
)导入这些类,而不是 Android SDK (android.app
)。 - Alex Lockwoodandroid.app.Fragment
,请使用Activity
;如果你使用android.support.v4.app.Fragment
,请使用FragmentActivity
。永远不要将android.support.v4.app.Fragment
附加到android.app.Activity
上,否则会抛出异常。 - Alex LockwoodFragments
)。然后,继续阅读这个教程(如何利用支持包中的Fragment
)。开发者网站上的文档也值得一读。 - Alex Lockwood