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();         }      } }
0 0
原创粉丝点击