有时候写字会比直接贴代码更有实际作用.---关于viewpager+fragment的实现,目前算是google比较推荐的一个搭配.看了一下网上的资料比较少.在实现的过程当中.遇到的问题算比较多了.这里拿出来和正在寻找答案或正在研究的朋友一起分享一下.
首先介绍一下Fragment其中的一个方法相信该方法许多朋友都在寻找.
@Override
public void setUserVisibleHint(boolean isVisibleToUser){
super.setUserVisibleHint(isVisibleToUser);
1 2 3 4 5 6 7 8 91011 | if(isVisibleToUser==true){ System.out.println("切换过来我就加载"); initCreate(); viewPage v = new viewPage(); v.start(); } if(isVisibleToUser==false){ }} |
上面的代码 加在你的子页面中 也就是继承了fragment的类中.这段代码的含义是说 当该fragment为可见的状态时isVisibleToUser=true这句. 你所需要做的操作.这里一般可以做及时小量数据的更新.
第二点 在viewpager与fragment合体(^_^)的时候,首次加载第一个子页面会默认将第二个子页面提前加载好.如果不希望预先去加载第二个页面.可以设置ViewPager对象的setOffscreenPageLimit(0)方法 设置为0 也就是一个都不预先加载.默认为1.这个时候你们想到了什么? 没错这验证了你是个不错的程序员.与上面的问题一起合并 我们就可以发现 这个设置是必不可少的.先将这里设置为0 那么假如你有4个页面 打开程序后只会预先加载第一个 接着!当滑动到第二个页面时我们使用上面的方法在确定该页面为可见的情况下去加载该页面的数据.(这里本来以为是报错.因为当滑动到第二个页面又没有预先加载为什么不会报错呢?但事实是就是没有报错.)
第三点 假如你的子页面有一个按钮要跳转到外面的一个Activity 例如编辑个人信息?总之你会有很多理由.然后就放心的直接跳转过去吧 填写完类似于表单的东西后我们可以直接把这个Activity finish()! 接着需要做的只不过是在跳转前的子页面
@Override
public void onResume() {
super.onResume();
//在更新数据
}
立即访问最新的数据 直接刷新当前的界面.这个生命周期的问题就不细说了.
上面这些灵活应用 可以完全达到目前主流应用的效果(网络数据这类的线程优化是必不可少的) 网上关于viewpager+fragment例子有很多 但大多数只能看 真运用到实际项目中 可以根据上面讲的这些来修改.在优化一下获取数据的过程.就可以实现
如果有哪里不明白可以站内我会回复.先说到这里.
联系客服