【Andorid X 项目笔记】动态设置ViewPager的Adapter问题(2)

简介:

由于没有找到嵌套FragmentActivity的方法,只好打算用不同的FragmentPagerAdapter来动态切换ViewPager的,如下:

     /**
     * 首页切换的三个界面
     
*/
     private FragmentPagerAdapter mPagerAdapter1 =  new FragmentPagerAdapter(getSupportFragmentManager()) {

        @Override
         public Fragment getItem( final  int position) {
             switch (position) {
             case 1:
                 return  new Fragment1();
             case 2:
                 return  new Fragment2();
             default:
                 return  new Fragment3();
            }
        }

        @Override
         public  int getCount() {
             return 3;
        }

    };

     private FragmentPagerAdapter mPagerAdapter2 =  new FragmentPagerAdapter(getSupportFragmentManager()) {

        @Override
         public Fragment getItem( final  int position) {
             switch (position) {
             case 1:
                 return  new Fragment4();
             case 2:
                 return  new Fragment5();
             default:
                 return  new Fragment6();
            }
        }

        @Override
         public  int getCount() {
             return 3;
        }

    };

然后很自然的想用ViewPager的setAdapter动态设置来切换, 结果发现不起作用!!莫有办法,只好先把Fragment清理一下,如下:

     public  void switchViewPages(FragmentPagerAdapter mAdapter,  int[] tabs) {
         if (mViewPager.getAdapter() !=  null) {
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            Bundle bundle =  new Bundle();
             int index = mViewPager.getAdapter().getCount();
            String key = "index";
             while (index >= 0) {
                bundle.putInt(key, index);
                ft.remove(fm.getFragment(bundle, key));
                index--;
            }
            ft.commit();
        }
        mViewPager.setAdapter(mAdapter);

查看了一下FragmentManager的源码,学会了getFragmen的用法,这个方法方便通过索引取Fragment。

本文转自博客园农民伯伯的博客,原文链接:【Andorid X 项目笔记】动态设置ViewPager的Adapter问题(2),如需转载请自行联系原博主。


目录
相关文章
|
安全 JavaScript Java
iOS使用PushKit实现VoIP
iOS使用PushKit实现VoIP
1174 0
|
10月前
|
存储 传感器 编解码
从基础到人脸识别与目标检测
前言 从本文开始,我们将开始学习ROS机器视觉处理,刚开始先学习一部分外围的知识,为后续的人脸识别、目标跟踪和YOLOV5目标检测做准备工作。我采用的笔记本是联想拯救者游戏本,系统采用Ubuntu20.04,ROS采用noetic。 颜色编码格式,图像格式和视频压缩格式 (1)RGB和BGR:这是两种常见的颜色编码格式,分别代表了红、绿、蓝三原色。不同之处在于,RGB按照红、绿、蓝的顺序存储颜色信息,而BGR按照蓝、绿、红的顺序存储。 rgb8图像格式:常用于显示系统,如电视和计算机屏幕。 RGB值以8 bits表示每种颜色,总共可以表示256×256×256=16777216种颜色
194 12
|
11月前
|
监控 开发者 UED
QLineEdit:textChanged、textedited区别
总之,理解 `textChanged`与 `textEdited`之间的细微差别,可以帮助开发者更加精准地控制用户界面的响应逻辑,提升应用程序的互动性和效率。
443 3
|
存储 运维 监控
监控与日志管理:保障系统稳定运行与高效运维的基石
【8月更文挑战第16天】监控与日志管理是保障系统稳定运行和高效运维的基石。它们不仅能够帮助企业及时发现并解决问题,还能够为性能调优、资源优化和业务决策提供有力支持。因此,在构建系统架构时,企业应高度重视监控与日志管理的规划和实施,确保它们能够充分发挥作用,为企业的发展保驾护航。同时,随着技术的不断进步和应用场景的不断拓展,监控与日志管理也将持续演进和创新,为企业带来更多的价值和便利。
|
安全 Java
【Java集合类面试十三】、HashMap如何实现线程安全?
实现HashMap线程安全的方法包括使用Hashtable类、ConcurrentHashMap,或通过Collections工具类将HashMap包装成线程安全的Map。
|
关系型数据库 MySQL Java
MySQL支持哪些编程语言?
【8月更文挑战第31天】MySQL支持哪些编程语言?
294 1
|
存储 SQL 关系型数据库
【MySQL进阶之路 | 基础篇】基本的SELECT语句及DESC显示表结构
【MySQL进阶之路 | 基础篇】基本的SELECT语句及DESC显示表结构
|
存储 Linux C语言
通过这14点,让你快速入门C语言(2)
通过这14点,让你快速入门C语言(2)
165 0
|
NoSQL Java Redis
若依如何使用(基本环境的配置)
若依如何使用(基本环境的配置)
|
存储 分布式计算 Apache
Apache Celeborn 让 Spark 和 Flink 更快更稳更弹性
阿里云/数据湖 Spark 引擎负责人周克勇(一锤)在 Streaming Lakehouse Meetup 的分享。
1260 2
Apache Celeborn 让 Spark 和 Flink 更快更稳更弹性

热门文章

最新文章