Ker*_*rry 156 android android-fragments android-fragmentactivity
我的问题是除了明显的继承差异之外,Fragment
和之间的主要区别是FragmentActivity
什么?每个班级最适合哪些场景?我试图理解为什么这两个类都存在......
Gun*_*son 277
A Fragment
是一部分Activity
,其中包含:
Activity
运行时添加或删除.一个Fragment
必须始终嵌入Activity
.
Fragments
不属于HoneyComb(3.0)之前的API.如果您想Fragments
在面向HoneyComb之前的平台版本的应用中使用,您需要将支持包添加到您的项目中并使用它FragmentActivity
来保存您的Fragments
.本FragmentActivity
类有处理的API Fragments
,而Activity
类,蜂窝状前向,其实不然.
如果您的项目仅针对HoneyComb或更新,那么您应该使用Activity
而不是FragmentActivity
保留您的Fragments
.
一些细节:
使用android.app.Fragment
带Activity
.使用android.support.v4.app.Fragment
带FragmentActivity
.不要将支持包添加Fragment
到a,Activity
因为它会导致抛出异常.
需要注意的事项:FragmentManager
并LoaderManager
为FragmentActivity提供单独的支持版本:
如果您使用的Fragment
是Activity
(HoneyComb及以上版本),请致电
getFragmentManager()
要得到 android.app.FragmentManager
getLoaderManager()
要得到 android.app.LoaderManager
如果你Fragment
在a FragmentActivity
(预HoneyComb)中使用a ,请致电:
getSupportFragmentManager()
得到android.support.v4.app.FragmentManager
.getSupportLoaderManager()
要得到 android.support.v4.app.LoaderManager
所以,不要这样做
//don't do this
myFragmentActivity.getLoaderManager();
//instead do this:
myFragmentActivity.getSupportLoaderManager();
Run Code Online (Sandbox Code Playgroud)
要么
//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()
Run Code Online (Sandbox Code Playgroud)
同样有用的是,虽然片段必须嵌入其中,Activity
但它不必是Activity
布局的一部分.它可以用作活动的隐形工作者,没有自己的UI.
将FragmentActivity视为可以支持Fragments的常规Activity类.在蜂窝之前,活动类不能直接使用片段,因此在使用片段的活动中需要这样做.
如果你的目标发行版是Honeycomb,那么你可以延伸到Activity.
片段也被视为"子活动".没有活动就不可能存在.总是将片段视为子活动,你应该做得很好.因此,活动将是父类,而片段是子类的符号关系.
归档时间: |
|
查看次数: |
78915 次 |
最近记录: |