2
回答
Android TabLayout和ViewPage配合使用的问题.
【腾讯云】校园拼团福利,1核2G服务器10元/月!>>>   

**就像SegmentFault的Android客户端
应用刚打开进入"问题", 就加在"问题"列表里面的数据
我点击"文章"在加载"文章"里面的数据. 
正常逻辑是这样的.**

clipboard.png

为什么我开发完
软件进入"问题"列表里面,是加载"问题"数据了.
当我点击"发现"按钮的时候, 我再点击"问题"按钮 又重新加载这个页面了,
clipboard.png

然后我加上这句话, 整体逻辑都实现,
但是,我进入应用的时候, 他会把 问题, 文章, 发现都加载一遍.
这样并不是我需要的效果.

clipboard.png

理想状态下是 软件打开的时候 进入 "问题", 我点击"发现"就加载发现, 我再添加"问题" 就不需要重新加载了.

举报
code98
发帖于2年前 2回/1K+阅
共有2个答案 最后回答: 2年前

viewpager默认保留2个页面,当你切换到第三个的时候,第一个自然就被detach掉了,再点回来的时候,fragment所有生命周期又会重新走一次。然后看你网络请求怎么处理咯

因为你的fragmentAdapter是继承FragmentPagerAdapter的,这个Adapter的使用的是detach来销毁不用的fragment,使用这一句代码:viewPager.setOffscreenPageLimit(2);是来确保fragment不会被销毁。然后你说的点击发现页就加载发现页应该是你在fragment的onresume中写了加载数据的方法。在fragment中,当fragment创建的时候就会执行onResume,当年再切换到发现页时已经不会执行onResume了,所以你需要把加载数据的方法放到setUserVisibleHint中,这个方法才是类似于Activity的onResume的方法,在setUserVisibleHint(boolean isVisibleToUser)中,isVisibleToUser是true代表当前fragment在显示,为false时代表fragment不在显示状态。值得注意的是在首个viewpager的fragment显示时setUserVisibleHint会显示多次,请在首个fragment中先判断布局的加载是否完成,在加载布局完成之后再执行加载数据的方法。
顶部