项目经验--Fragment(基于ViewPager)

来源:互联网 发布:mac app store出错 编辑:程序博客网 时间:2024/05/17 02:47

一、主要是纠结于一下几点:

1、Fragment初始化的时机

2、因为错误的设计,导致数据请求量很大,为什么滑动Fragment每次都要重新请求数据,加载数据,我的数据init是放在onDreate里面的,是不是应该只在new的时候请求呢?

借鉴与zhy的博客,掺加个人的见解。http://blog.csdn.net/lmj623565791/article/details/37970961

一开始我以为是自己Fragment见识不够深,然后发现遇到相似问题的都是viewpager与Fragment结合的时候遇到的问题,现在想,当时只注重效果,没有关注问题而导致现在的窘境,必须注意

附具体问题解决链接:

1)ViewPager+Fragment+广播来实现一个滑动页面切换
http://www.codes51.com/article/detail_110234.html

其实就是取消预加载的问题:

http://download.csdn.net/detail/hyq912/8353881

http://www.2cto.com/kf/201501/368954.html

http://www.eoeandroid.com/forum.php?mod=viewthread&tid=564267


2)【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问
http://www.dnzg.cn/chengxusheji/Android/20140724-42144.html

二、Fragment知识点精华

1、熟识FragmentTransaction的方法

add,remove,replace,hide,show,detach(),attach()

值得注意的是:如果你喜欢使用Fragment,一定要清楚这些方法,哪个会销毁视图,哪个会销毁实例,哪个仅仅只是隐藏,这样才能更好的使用它们。

a、比如:我在FragmentA中的EditText填了一些数据,当切换到FragmentB时,如果希望会到A还能看到数据,则适合你的就是hide和show;也就是说,希望保留用户操作的面板,你可以使用hide和show,当然了不要使劲在那new实例,进行下非null判断。

b、再比如:我不希望保留用户操作,你可以使用remove(),然后add();或者使用replace()这个和remove,add是相同的效果。

c、remove和detach有一点细微的区别,在不考虑回退栈的情况下,remove会销毁整个Fragment实例,而detach则只是销毁其视图结构,实例并不会被销毁。那么二者怎么取舍使用呢?如果你的当前Activity一直存在,那么在不希望保留用户操作的时候,你可以优先使用detach。

d、一定记得replace是remove和add的合体,并且如果不添加事务到回退栈,前一个Fragment实例会被销毁

2、

3、实例:

1、利用空白Fragment保存数据http://blog.csdn.net/lmj623565791/article/details/37936275

2、fragment-activity-fragment之间的通信:http://blog.csdn.net/lmj623565791/article/details/42628537



0 0
原创粉丝点击