我的问题是,除了明显的继承差异之外,Fragment
和之间的主要区别是FragmentActivity
什么?每个班级最适合哪种情况?我试图了解为什么这两个类都存在...
我的问题是,除了明显的继承差异之外,Fragment
和之间的主要区别是FragmentActivity
什么?每个班级最适合哪种情况?我试图了解为什么这两个类都存在...
Answers:
A Fragment
是的一部分Activity
,其中具有:
Activity
运行时添加或删除。一个Fragment
必须始终嵌入Activity
。
Fragments
不是HoneyComb(3.0)之前的API的一部分。如果要Fragments
在HoneyComb之前的平台版本的应用程序中使用,则需要将Support Package添加到项目中并使用FragmentActivity
来保存您的Fragments
。本FragmentActivity
类有处理的API Fragments
,而Activity
类,前蜂窝,其实不然。
如果您的项目仅针对HoneyComb或更高版本,则应使用Activity
而不是FragmentActivity
保留Fragments
。
一些细节:
android.app.Fragment
与一起使用Activity
。android.support.v4.app.Fragment
与一起使用FragmentActivity
。不要将支持包添加Fragment
到中,Activity
因为它会引发异常。
需要注意的一点:FragmentManager
并LoaderManager
为FragmentActivity提供单独的支持版本:
如果您Fragment
在Activity
(HoneyComb以上版本)中使用,请致电
getFragmentManager()
要得到 android.app.FragmentManager
getLoaderManager()
要得到 android.app.LoaderManager
如果您Fragment
在FragmentActivity
(HoneyComb之前)中使用,请致电:
getSupportFragmentManager()
得到android.support.v4.app.FragmentManager
。getSupportLoaderManager()
要得到 android.support.v4.app.LoaderManager
所以,不要做
//don't do this
myFragmentActivity.getLoaderManager();
//instead do this:
myFragmentActivity.getSupportLoaderManager();
要么
//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()
了解一个有用的信息是,虽然片段必须嵌入片段中,Activity
但它不一定是Activity
布局的一部分。它可以用作活动的不可见工作程序,而没有自己的UI。
FragmentActivity是我们经典的Activity,具有片段支持,仅此而已。因此,将Fragment附加到Activity时,需要FragmentActivity。
Well Fragment是复制Activity基本行为的好组件,仍然不是像Activity这样的独立应用程序组件,需要将其附加到Activity才能正常工作。
看这里了解更多详情
FragmentActivity是包含Fragment的临时活动。在这几句话中,我向您解释了其中一项重要的重要更改,在android 3.0(HoneyComb)中,android team已插入android sdk。
有了这些新概念,您的代码和布局片段将变得更加灵活和可维护。如果您在Google上搜索,则有很多示例。