Fragment 相关
来源:互联网 发布:模拟网络攻击软件 编辑:程序博客网 时间:2024/06/06 05:55
一,Fragment的创建:
1,创建Fragment的XML布局,创建NewsTitleFragment extends Fragment,重写onCreateView()
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.i(TAG,"onCreateView()"); View view=inflater.inflate(R.layout.fragment_news_title, container, false); return view; }
2,Fragment的生命周期方法:
onAttach(Context context) onCreate(Bundle savedInstanceState) onCreateView() onActivityCreated() onStart() onResume() onPause() onStop() onDestroyView() onDestroy() onDetach()
其与关联Activity生命周期的关系:(在XML中静态引入Fragment的情况)
I/MainActivity: onCreate()
I/NewsTitleFragment: onAttach()
I/NewsTitleFragment: onCreate()
I/NewsTitleFragment: onCreateView()
I/MainActivity: onStart()
I/NewsTitleFragment: onActivityCreated()
I/NewsTitleFragment: onStart()
I/MainActivity: onResume()
I/NewsTitleFragment: onResume()
I/MainActivity: onPause()
I/NewsTitleFragment: onPause()
I/MainActivity: onStop()
I/NewsTitleFragment: onStop()
PS.一般我们说一个Activity或其关联的Fragment要运行到onResume()后才能看见,经调试确认是在onResume()执行完后处于运行状态是可见。
二,Fragment的使用:
1,XML中静态引用,通过name属性
<fragment android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.example.archermind.fragment.NewsTitleFragment"/>
2,code中动态添加:
NewsContentFragment fragment=new NewsContentFragment(); FragmentManager fragmentManager=getFragmentManager(); FragmentTransaction transaction=fragmentManager.beginTransaction(); transaction.replace(R.id.news_content_fg,fragment); transaction.commit();
注意:transaction.replace()会替换之前的fragment,如果存在的话,之前的fragment会执行onPause()->onStop()->onDestroy()被销毁。
可以在transaction.commit()之前调用transaction.addToBackTask(null)让其处于提示状态,之后按Back建会再次显示。
三,Fragment与Activity相互通信
1,Activity操作Fragment:
NewsContentFragment fragment=(NewsContentFragment)getFragmentManager().findFragmentById(R.id.news_content_fg);
2,Fragment操作Activity:
getActivity().findViewById(R.id.news_content_layout)!=null)
注:在Fragment中调用getActivity()可以得到与之关联的Activity实例。通知这也是获得Context对象的方式。
另:findViewById()这个方法不仅仅是View含有,Activity中也含有
@Nullablepublic View findViewById(@IdRes int id) { return getWindow().findViewById(id);}
3,Fragment最初是为平板适配而来的,适配方式可以在不同layout文件夹下面创建同名的XML,XML中做各自不同的布局,程序运行时会
根据自身设备的情况去选择加载不同layout下的xml。
- Fragment相关
- Fragment相关
- Fragment相关
- Fragment相关
- Fragment相关
- Fragment 相关
- Android fragment相关
- fragment相关(笔记)
- Fragment的相关应用
- andorid fragment相关知识
- Fragment 相关文章收集
- Fragment生命周期相关
- Fragment相关知识
- android 之Fragment相关
- Fragment相关研究
- Fragment ListFragment相关API
- 读书笔记(五)Fragment相关
- Fragment相关知识点
- 201409-1 相邻数对 ccf
- mysql连接查询
- 安迪-比尔定律
- nginx跳转
- scp命令
- Fragment 相关
- 快速排序算法
- [学习笔记]Python_编码(20171118)
- hdu-2096-小明A+B
- 新唐NUC972 ARM9 内置DDR2 最大128MB 11路UART 电表 集中器 充电桩
- HDU 2045 不容易系列之(3)—— LELE的RPG难题(最简洁代码没有之一,数学大法好)
- java 自我知识总结 (十二)重载 及 重写
- 将eclipse开发的web项目导入到myeclipse
- 双11大战:为什么细分品类车载冰箱火了?