viewpager+fragment,怎么让它切换页签不刷新

guaguaAnd 2015-08-28 04:28:48
加精
我现在做了个类型微信的,底部页签功能,用viewpager+fragment,但是每次切换的时候,都刷新了页面。这个要怎么实现,切换不要重新刷呢?
...全文
7200 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
MissZzz丶 2017-03-16
  • 打赏
  • 举报
回复
在Fragment中 private View mRootView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if(mRootView == null){ //初始化 }else { ViewGroup parent = (ViewGroup) mRootView.getParent(); if(parent != null){ parent.removeView(mRootView); } } return mRootView; } 此方法可完美实现切换不刷新
sam苦行僧 2016-11-22
  • 打赏
  • 举报
回复
让fragment不要走contentView生命周期方法。
杨裕潘 2016-11-04
  • 打赏
  • 举报
回复
让viewpager的适配器继承fragmentviewpag实现他的getfragment方法实现替换
Mr_ye 2016-09-02
  • 打赏
  • 举报
回复
11 楼链接 能解决问题
qq_35982063 2016-08-31
  • 打赏
  • 举报
回复
创建一个类然后首先判断你要展示的这个fragment是否存在(已经new过,new过就相当于访问了网络),如果不存在就用hashmap,根据键值对来存储对应的fragment,如果不为Null那么根据key获取出来fragment。
dllsndy 2016-05-10
  • 打赏
  • 举报
回复
private class MyFragmentAdapter extends FragmentPagerAdapter{ List<Fragment> list; public MyFragmentAdapter(FragmentManager fm,List<Fragment> list) { super(fm); this.list=list; } @Override public Fragment getItem(int position) { return list.get(position); } @Override public int getCount() { return list.size(); } } 。。。这个适配器好像就不会销毁啊。
SkyFlying2017 2016-04-29
  • 打赏
  • 举报
回复
引用 4 楼 JaySeng的回复:
简单办法,设置ViewPager的缓存页数为你的总页数减1,具体方法名我忘记了
viewpager不是只能有3个吗?
qq_33466159 2016-01-19
  • 打赏
  • 举报
回复
楼主问题解决了吗?? 求答案
jeky_zhang2013 2015-09-30
  • 打赏
  • 举报
回复
不同的页签对应同样的页面,这样使用viewpager就没有意义了,关键想清楚需要做功能是什么
mmsx 2015-09-22
  • 打赏
  • 举报
回复
参考博文,很详细: http://blog.csdn.net/qq_16064871/article/details/45932065
qq_21206775 2015-09-22
  • 打赏
  • 举报
回复
在return new fragment();改成 Fragment fg = new fragment(); return fg;
一朵时光_bobo 2015-09-15
  • 打赏
  • 举报
回复
引用 8 楼 jiaqiangm 的回复:
show 和hide方法,用add,别用replace
苟浩 2015-09-10
  • 打赏
  • 举报
回复
别把数据刷新放在fragment的生命周期里,你可以写个方法,在viewpager切换的时候,主动调用这个方法,去刷新页面。
非花非雾-- 2015-09-08
  • 打赏
  • 举报
回复
ViewPager在每次切换的时候都会remove当前的view,然后add下一页的view,如果你设置了setOffscreenPageLimit(int size); 那么你在第一次打开的时候就会缓冲你设置的页数,但是这个在addView的时候你添加的view会做数据的填充。 比如你ViewPager里边放的是Fragment,那么你就要通过这个 /* @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser && !Utils.getLoginState()) { mDialog.show(); }else if (isVisibleToUser && Utils.getLoginState() && !Utils.getMemberState()) { mDialog.show(); } }*/来进行判断是否要进行数据的刷新,你可以搜索下这个方法的使用。
ZhangdroidApp 2015-09-02
  • 打赏
  • 举报
回复
fragmentmanager使用add添加tab页,然后设置viewpager的缓存数为你的tab页数就可以了,setOffscreenPageLimit()
kiss_whr 2015-09-02
  • 打赏
  • 举报
回复
viewpager.setOffscreenPageLimit(list.size()-1); 这是设置缓存的
deadsee 2015-09-02
  • 打赏
  • 举报
回复
重写Viewpage
安珀 2015-09-01
  • 打赏
  • 举报
回复
引用 15楼节操在此 的回复:
优化你的FragmentPagerAdapter,重写destroyItem,在该方法里面不做任何操作,这样切换时就不会销毁你的视图,想要做刷新,自己去做控制,下拉之类的操作
正解,楼主没说自己用什么适配器,stateadapter重写了destroyitem,默认是用FMromove掉fragment
节操在此 2015-09-01
  • 打赏
  • 举报
回复
优化你的FragmentPagerAdapter,重写destroyItem,在该方法里面不做任何操作,这样切换时就不会销毁你的视图,想要做刷新,自己去做控制,下拉之类的操作
加载更多回复(14)

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧