fragment的使用
来源:互联网 发布:石油价格数据库 编辑:程序博客网 时间:2024/05/18 19:18
fragment的优点:
1 可以适应不同的设备
2 可以动态的移除,添加,替换等操作.
3 解决Activity之间切换不流畅的问题.
4 做局部内容的更新更加方便.
下面介绍fragment的生命周期:
按照fragment的调用顺序,依次将要调用的生命周期方法:
fragment.ontach() fragment依附Activity时被调用的方法
fragment.oncreate() fragment被创建时调用的方法,一般用于初始化.
fragment.oncreateView() fragment初始化其ui组件时被调用的方法.
fragment.onActivitycreate() fragment所依附的Activity被创建之后调用的方法.
fragment.onstart() fragment被展现在屏幕时调用的方法
fragment.onResume() fragment被激活,获取焦点时被调用的方法.
fragment.onpause() fragment被暂停时被调用的方法.一般进行数据的持久化.
fragment.onstop() fragment 消失于屏幕被调用.
fragment.ondestoryview() fragment组件被回收调用.
fragment.ondestory() fragment 被回收调用.
fragment.ondetach() fragment 脱离Activity被调用.
现在设想Fragement f 依附于Activity A 时,两个组件的生命周期方法被调用的顺序:
两组件均被创建时:
f.ontach() f.oncreate() f.oncreateView() A.oncreate
f.onActivitycreate() A.start() f.start() A.resume() f.resume()
此时,按下手机的HOME键,被调用的生命周期方法:
f.pause() A.pause() f.stop() A.stop()
此时,重新启动应用,被调用的方法:
A.restart() A.start() f.start() A.resume() f.resume()
此时,按下手机的返回键,被调用的方法:
f.pause() A.pause() f.stop() A.stop()
f.destoryview() f.destroy() f.ondetach()
A.destory()
fragment之间切换显示
public class FileBrowserActivity extends Activity implements OnClickListener { private ImageView mRecordBtn; private ImageView mScreenShootBtn; private FragmentManager mManager; private RecordFragment mRecordFragment; private ScreenShootFragment mScreenShootFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_file_browser); mManager = getFragmentManager(); mRecordBtn = (ImageView) findViewById(R.id.record_show); mScreenShootBtn = (ImageView) findViewById(R.id.screen_shoot_show); init(); setDefaultFragment(); } private void init() { mRecordBtn.setOnClickListener(this); mRecordBtn.setImageResource(R.drawable.record_show_pressed); mScreenShootBtn.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.record_show: mRecordBtn.setImageResource(R.drawable.record_show_pressed); mScreenShootBtn.setImageResource(R.drawable.btn_screen_shoot); if (mRecordFragment == null) { mRecordFragment = new RecordFragment(); } if (mScreenShootFragment != null) { switchContent(mScreenShootFragment, mRecordFragment); } break; case R.id.screen_shoot_show: mScreenShootBtn.setImageResource(R.drawable.screen_shoot_pressed); mRecordBtn.setImageResource(R.drawable.btn_record_show); if (mScreenShootFragment == null) { mScreenShootFragment = new ScreenShootFragment(); } if (mRecordFragment != null) { switchContent(mRecordFragment, mScreenShootFragment); } break; } } private void setDefaultFragment() { FragmentTransaction transaction = mManager.beginTransaction(); if (mRecordFragment == null) { mRecordFragment = new RecordFragment(); } transaction.add(R.id.container, mRecordFragment); transaction.show(mRecordFragment).commit(); } public void switchContent(Fragment from, Fragment to) { FragmentTransaction transaction = mManager.beginTransaction(); if (!to.isAdded()) { transaction.hide(from).add(R.id.container, to).commit(); } else { transaction.hide(from).show(to).commit(); } } }
- ViewPage+Fragment的使用
- Fragment的使用
- Android Fragment的使用
- Android-Fragment的使用
- Android Fragment的使用
- Android Fragment的使用
- Android Fragment的使用
- Fragment的使用
- Android Fragment的使用
- Fragment的使用
- Fragment的简单使用
- Fragment的使用
- fragment的使用
- Android Fragment的使用
- android Fragment 的使用
- Fragment的使用
- Android Fragment的使用
- Android Fragment的使用
- 区间树
- MyEclipse安装插件
- 读浅墨博客 十一 笔记
- EEliod嵌入式实验4
- 关于在 eclipse R cannot be resolved to a variable 解決
- fragment的使用
- 视频特性TI(时间信息)和SI(空间信息)的计算工具:TIandSI-压缩码流版
- iOS 临时想改变状态栏字体颜色
- Activity状态变化后状态不能保存的问题
- iOS返回上一个View
- 稀疏编码(sparsecode)简单理解
- android常用的开源工具
- 【java正则】判断日期格式及非负浮点数
- JTA 深度历险 - 原理与实现