资讯专栏INFORMATION COLUMN

android ViewPager和Fragment

liangdas / 1740人阅读

摘要:适用于较多的情况下。但在回调方法之前会回调方法来保存的状态,下次显示时通过把存储的状态值取出来,参考文章中的配合使用三种适配器详解

ViewPager的应用场景

应用开头的引导界面

类似于“微信”或者“今日头条”标签页之间的切换

使用步骤

第一步:在布局文件中加入ViewPager组件,并在代码中获得该组件

第二步:为ViewPager添加适配器,ViewPager可以有三种类型的适配器

PagerAdapter:使用较少,所以没有去了解

FragmentPagerAdapter:适用于Fragment比较少的情况下,因为这个适配器会将访问过得Fragment都保存在内存中,当Fragment较多时对内存的消耗就会比较大。

FragmentStatePagerAdapter:适用于Fragment较多的情况下。当整个Fragment不再被访问,它将被销毁

示例代码:

public class ExamplePagerAdapter extends FragmentStatePagerAdapter{
    List fragments;
    String[] titles;
    
    //fragments里是ViewPager所有要显示的Fragment的集合,titles是所有标签页的名字的集合
    public ExamplePagerAdapter(FragmentManager fm, List fragments, String[] titles) {
        super(fm);
        this.fragments = fragments;
        this.titles = titles;
    }
    
    //此ViewPager一共有多少个标签页可以滑动
    @Override
    public int getCount() {
        return fragments.size();
    }
    
    //通过此方法返回对应位置标签页用到的fragment
    @Override
    public Fragment getItem(int position) {
        return fragments.get(position);
    }
    
    //通过此方法指定每个标签页的名字
    @Override
    public CharSequence getPageTitle(int position) {
        return titles[position];
    }
}

第三步:为ViewPager绑定适配器,传入参数

ViewPager viewPager = (ViewPager) findViewById(R.id.bbs_center_viewPager);
ExamplePagerAdapter pagerAdapter = new ExamplePagerAdapter (getSupportFragmentManager(), posts, titles);
viewPager.setAdapter(pagerAdapter );

第四步:为ViewPager绑定监听器

其他

1.通过ViewPager控制显示第几个标签页:

    @Override
    public void onBackPressed() {
        if (mPager.getCurrentItem() == 0) {
            // If the user is currently looking at the first step, allow the system to handle the
            // Back button. This calls finish() on this activity and pops the back stack.
            super.onBackPressed();
        } else {
            // Otherwise, select the previous step.
            mPager.setCurrentItem(mPager.getCurrentItem() - 1);
        }
    }

2.在使用FragmentStatePagerAdapter作为适配器的情况下保存Fragment的状态
当使用FragmentStatePagerAdapter 时,如果Fragment不显示,那么Fragment对象会被销毁(滑过后会保存当前界面,以及下一个界面和上一个界面(如果有),最多保存3个,其他会被销毁掉)。但在回调onDestroy()方法之前会回调onSaveInstanceState(Bundle outState)方法来保存Fragment的状态,下次Fragment显示时通过onCreate(Bundle savedInstanceState)把存储的状态值取出来,

参考文章:
Android中Fragment+ViewPager的配合使用
ViewPager三种适配器详解

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/12638.html

相关文章

  • 如何更新及替换ViewPager中的Fragment

    摘要:最开始处于第页时,不仅为第页创建实例,还为相邻的第页创建了实例刚开始处在注释调用了的构造器方法,下同。由于我们必须在中实例化一个,所以当被调用后,相应的生命周期函数也就被调到了调用了的构造器方法销毁指定位置的。 How to update and replace fragment in viewpager? ListView的工作原理 在了解ViewPager的工作原理之前,先回顾Li...

    lookSomeone 评论0 收藏0
  • Android实现底部状态栏切换

    摘要:开发过程中,特别是新开的项目,底部状态栏的切换使用的频率非常的高,主要的实现方式有这里我先介绍前面两种实现方式,后面两种后期再贴出实现方式。代码地址底部公众号回复底部状态栏切换即可获取。 Android开发过程中,特别是新开的项目,底部状态栏的切换使用的频率非常的高,主要的实现方式有: (1)、TabLayout + Fragment (2)、FragmentTabHo...

    SQC 评论0 收藏0
  • Android实现底部状态栏切换

    摘要:开发过程中,特别是新开的项目,底部状态栏的切换使用的频率非常的高,主要的实现方式有这里我先介绍前面两种实现方式,后面两种后期再贴出实现方式。代码地址底部公众号回复底部状态栏切换即可获取。 Android开发过程中,特别是新开的项目,底部状态栏的切换使用的频率非常的高,主要的实现方式有: (1)、TabLayout + Fragment (2)、FragmentTabHo...

    UsherChen 评论0 收藏0
  • android design library提供的TabLayout的用法

    摘要:现在我们可以使用库的去实现了。创建其中的布局为的适配器设置这里提几点我遇到的问题开始我设置的是运行后,三个标签挤到一块去了。这个有两个属性值不做过多的解释,适合很多的情况。需要注意的是方法是最新的才有的。 在开发中,我们常常需要ViewPager结合Fragment一起使用,如下图:showImg(https://segmentfault.com/img/bVoQIu); 我们可以使用...

    icyfire 评论0 收藏0
  • Fragment中监听onKey事件

    摘要:本文分享开发中监听事件主要代码,供技术员参考学习。项目中越来越多的用到,下面记录一下在中监听的事件。实现事件,判断当前的是哪一个,是不是所需要的然后在需要监听事件的中写一个静态方法,传递与事件即可。 wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改。本文分享android开发Fragment...

    Berwin 评论0 收藏0

发表评论

0条评论

liangdas

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<