您的位置:首页 > 移动开发 > Android开发

安卓笔记android fragment在viewpager中的使用和屏幕切换的状态保存等

2015-01-24 09:37 871 查看
@by moses      fragment在viewpager中的使用注意项:

email: donmoses1989@gmail.com

一、在普通activity 的布局中使用fragment , 

开启事务后,

判断fragment是否为空,如果为空则向事务中添加该fragment,

如果不为空,则使用事务.show(该fragment)。

二、在viewpager中使用fragment: 使用FragmentPagerAdapter  

因为fragment需要提前加入到adapter的数据源,因此在每次开启事务后不再添加fragment,

而是直接使用事务.show()显示该fragment。

三、  : 一、二为参考,有待进一步学习

因为在适配器FragmentPagerAdapter  的getItem() 中返回了Fragment,也即已经将fragment实例添加,所以在

处理viewpager的监听事件时,不应在开启事务对fragment进行操作。

【【特别值得记住的是:         

①Activity第一次开启式,Activity的onCreate()会在onAttachFragment()前执行,也就是说,

只有在new了Fragment的实例以后,才会在Fragment类中回调onAttach(),让后返回到Activity中回调

onAttachFragment()。

②在切换屏幕时,Activity会被销毁重建,与①中不同的是:会最先由Fragment回调其onAttach(),

然后返回到Activity中回调onAttachFragment(),然后才会回调Activity中的onCreate();

③综上: 在屏幕切换时,为了保持界面的延续性,需要非常注意Activity和Fragment声明周期回调方法的原理和机制。

**这样操作:
A、构造两个List<Fragment>对象,mFragments和mAttachFragments。前者作为适配器的数据源,后者作为接收

   通过onAttachFragment()返回得到的Fragment对象(会根据数据量反复调用)。

B、在第一次(每一次)进入Activity时,使用new关键字获得Fragment实例,添加数据源mFragments到并刷新适配器;

   【理解】:判断条件 if(mAttachFragments.size() == 0){

//即没有通过onAttachFragment()获得任何数据,也就是每次进入Activity的状况,
//这时候就采取new的方式。

}else{
//即通过onAttachFragment()获得了数据,也就是不是第一次进入Activity,那么就
//应该是属于切换屏幕的情况。  【这个时候就不是使用new获得Fragment对象了,
//这是先清空数据源mFragments,然后把从onAttachFragment()获得的数据,也就是
//mAttachFragments中的数据放到已经清空的mFragments,然后刷新适配器即可。】

};

C、在执行上面步骤的同时或之前,在onAttachFragment()中需要将获得的Fragment对象添加到mAttachFragments中。
】】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐