文档章节

ViewPager中切换及滑动时Fragment数据保存

先进青年
 先进青年
发布于 2017/09/04 16:34
字数 239
阅读 55
收藏 0

 

ViewPager的默认加载方式是缓存当前界面前后相邻的两个界面,即最多共缓存包括当前界面在内的三个界面信息。当滑动切换界面的时候,非相邻界面信息将被释放。

界面2是当前界面,界面1和3是缓存界面,当切换到1时,界面2仍缓存,界面3被销毁释放,于是便有了onDestroyView的调用。

由1切换到2或3时,界面3又被重新创建,于是走了onCreateView流程。

解决方法也比较简单:

mAdapter=new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                Fragment fragment = null;
                fragment = fragments.get(position);
                Bundle bundle = new Bundle();
                bundle.putString("id",""+position);
                fragment.setArguments(bundle);
                return fragment;
            }

            @Override
            public int getCount() {
                return fragments.size();
            }
            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                Fragment fragment = (Fragment)super.instantiateItem(container,position);
                getSupportFragmentManager().beginTransaction().show(fragment).commit();
                return fragment;
            }

            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
//                super.destroyItem(container, position, object);
                Fragment fragment = fragments.get(position);
                getSupportFragmentManager().beginTransaction().hide(fragment).commit();
            }
        };
viewPager.setAdapter(mAdapter);

© 著作权归作者所有

先进青年
粉丝 0
博文 28
码字总数 9089
作品 0
武汉
私信 提问
【求指教!!】Fragment ViewPager相关问题

想实现类似于微信的效果,点击Footer的tab整个页面的内容跟着变化,但是页面切换不需要滑动(页面切换包括手势切换和点击Footer的tab切换,默认ViewPager是手势切换和点击Footer的tab切换都有...

Summersize
2013/12/16
338
3
Android viewpager+fragment+viewpager+fragment 的问题

用了viewpager+fragment 嵌套viewpager+fragment, 第一个viewpager自定义了禁止滑动的功能,通过点击底部的导航栏进行切换,然后第二个viewpager可以滑动,但是当第二个viewpager滑动到最后...

飘渺的火
2017/12/11
143
0
TabLayout实现顶部导航(一)

前言 顶部导航栏,是我们在开发中比较常见的一种显示布局,它的实现可以有多种方式,那么今天我们就来讲讲 TabLayout 对它的实现。 此篇文章参考以下链接 TabLayout轻松实现仿今日头条顶部t...

奔跑的佩恩
01/07
0
0
一起学Android之ViewPager

本文以一个简单的小例子,简述在Android开发中ViewPager的常见用法,仅供学习分享使用。 概述 ViewPager是一个支持使用者左右滑动的布局管理控件,可以通过一个实现的(适配器)PageAdapter...

Alan.hsiang
01/27
0
0
Android开源控件ViewPager Indicator的使用方法

Android Viewpager Indicator是Android开发中最常用的控件之一,几乎所有的新闻类APP中都有使用,下面介绍其基本使用方法。 1. ViewPager Indicator的Library 查看Viewpager Indicator的Lib...

linsea
2014/03/14
54.7K
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot配置文件读取pom文件信息

解决的问题 springboot(当然别的也可以)多环境切换需要该配置文件,打包时不够方便。 解决: 配置文件能读取pom文件中的配置,根据命令选择不同配置注入springboot的配置文件中 pom配置文件...

刘一草
9分钟前
3
0
蓝牙自定开锁时间--Python

from Crypto.Cipher import AESfrom binascii import b2a_hex, a2b_hex###强制输入明文增加到16字节的倍数,在末尾补'\0'def add_to_16(text): text = str(text, 'ISO-8859-1'......

丁典
10分钟前
3
0
好程序员web前端教程分享JS基础知识

  好程序员web前端教程分享JS基础知识,为大家分享一篇关于JS的基础知识。   1、执行环境:有时也叫环境,是JavaScript中最为重要的一个概念,执行环境定义了变量或函数有权访问的其他数...

好程序员官网
12分钟前
1
0
kali和win共享文件夹设置

卸载vmtools > whereis vmware-tools /etc/vmware-tools/ /usr/lib/vmware-tools/> cd /etc> sudo rm -r vmware-tools> cd /usr/lib> sudo rm -r vmware-tools 先添加源 leafpa......

yeahlife
14分钟前
1
0
killall 、kill 、pkill 命令区别

killall 命令Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name)。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程, 我们还需要在之前使...

突突突酱
21分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部