fragment和activity之间的区别
2017-03-10 10:21
453 查看
首先这里不准备论述fragment和activity的具体定义,用法和概念。只是建立在了解这两个东西的基础上谈区别。
在理解二者之间的区别的时候,只需要不断的问自己一个问题,就是fragment能做到的Activity能做到吗?可以做到的话没问题,不可以做到的话,为什么不可以呢?这个为什么就是区别。先来看两者的生命周期,这个不必多说。
1.fragment显得更加灵活。可以直接在XML文件中添加<fragment/>,Activity则不能。
eg:
<fragment
Android:id="@+id/left_fragment"
Android:name="com.example.fragmenttest.LeftFragment"
…
…
…/>
<fragment
Android:id="@+id/right_fragment"
Android:name="com.example.fragmenttest.rightFragment"
…
…
…/>
2.可以在一个界面上灵活的替换一部分页面,Activity不可以,做不到。
替换的时候注意要将这个fragment放在返回栈上。
3.fragment和Activity之间的通信:(也就是控件的相互操控)
fragment控制fragment:得到一个Activity,然后通过这个Activity的getFragmentManager()获得该Fragment的实例。
fragment控制Activity:这个很简单。每个Fragment都有getActivity()得到一个Activity。
MainActivity activity=getActivity();
Activity控制fragment:xxxFragment xxx=getFragmentManager().findFragmentById();
Activity控制Activity:这个显然是通过Intent Activity之间的通信完成。别忘了在被打开的活动中创建Intent和得到Intent一起进行,写个静态的actionStart()。
4.fragment和Activity中控件的加载
Fragment的载入是通过OnCreateView的时候通过inflater.inflate()加载布局,然后通过修改main.xml,在main.xml上增加注册fragment标签,然后通过android:name来载入你已经通过inflater加载的隐藏布局。
有几个关键点:fragment是通过inflater加载View然后在main.xml中注册得到的。当然如果你可以在fragment中得到View那就可以通过View.findViewId()来操控fragment上的具体控件。
5.动态加载不同的fragment:
首先,监听你的按钮。
1.创建待加载fragment的实例
2.得到FragmentManager,在活动中可以直接调用getFragmentManager()方法获得。
3.调用Manager的BeginTansation()
4.用replace()改变不同的Fragment
5.commit事务。
6.碎片的生命周期
在理解二者之间的区别的时候,只需要不断的问自己一个问题,就是fragment能做到的Activity能做到吗?可以做到的话没问题,不可以做到的话,为什么不可以呢?这个为什么就是区别。先来看两者的生命周期,这个不必多说。
1.fragment显得更加灵活。可以直接在XML文件中添加<fragment/>,Activity则不能。
eg:
<fragment
Android:id="@+id/left_fragment"
Android:name="com.example.fragmenttest.LeftFragment"
…
…
…/>
<fragment
Android:id="@+id/right_fragment"
Android:name="com.example.fragmenttest.rightFragment"
…
…
…/>
2.可以在一个界面上灵活的替换一部分页面,Activity不可以,做不到。
替换的时候注意要将这个fragment放在返回栈上。
3.fragment和Activity之间的通信:(也就是控件的相互操控)
fragment控制fragment:得到一个Activity,然后通过这个Activity的getFragmentManager()获得该Fragment的实例。
fragment控制Activity:这个很简单。每个Fragment都有getActivity()得到一个Activity。
MainActivity activity=getActivity();
Activity控制fragment:xxxFragment xxx=getFragmentManager().findFragmentById();
Activity控制Activity:这个显然是通过Intent Activity之间的通信完成。别忘了在被打开的活动中创建Intent和得到Intent一起进行,写个静态的actionStart()。
4.fragment和Activity中控件的加载
Fragment的载入是通过OnCreateView的时候通过inflater.inflate()加载布局,然后通过修改main.xml,在main.xml上增加注册fragment标签,然后通过android:name来载入你已经通过inflater加载的隐藏布局。
有几个关键点:fragment是通过inflater加载View然后在main.xml中注册得到的。当然如果你可以在fragment中得到View那就可以通过View.findViewId()来操控fragment上的具体控件。
5.动态加载不同的fragment:
首先,监听你的按钮。
1.创建待加载fragment的实例
2.得到FragmentManager,在活动中可以直接调用getFragmentManager()方法获得。
3.调用Manager的BeginTansation()
4.用replace()改变不同的Fragment
5.commit事务。
6.碎片的生命周期
相关文章推荐
- Fragment FragmentActivity Activity 之间的区别
- Fragment的onCreateView和onActivityCreate之间的区别
- fragment和activity之间的区别
- Fragment的onCreateView和onActivityCreate之间的区别
- Activity和Fragment之间的联系和区别
- Android学习笔记(2)——Activity与FragmentActivity之间的区别
- Android下Context、Application、Activity之间的联系和区别
- Android Fragment与Activity之间的数据交换(Fragment从Activity获取数据)
- Activity与Activity之间,Fragment与Fragment之间通过Bundle传值的研究
- Android:Activity+Fragment及它们之间的数据交换(一)
- Android:Activity+Fragment及它们之间的数据交换(一)
- Activity与Activity之间,Fragment与Fragment之间通过Bundle传值的研究
- Android 笔记-Fragment 与 Activity之间传递数据
- getApplication()、getApplicationContext()、getBaseContext()、MainActivity.this、this、getContext()之间的区别
- FragmentActivity和Activity的区别及何时使用两者
- Fragment的生命周期&同一Activity下不同Fragment之间的通信
- 在Activity之间使用Intent传值和Bundle传值的区别和方式
- 46 Android fragment ——activity 之间的传值
- Android中Activity跳转 startActivity和startActivityForResult之间的区别
- android fragment和activity的区别