博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Andorid X 项目笔记】动态设置ViewPager的Adapter问题(2)
阅读量:6525 次
发布时间:2019-06-24

本文共 1438 字,大约阅读时间需要 4 分钟。

声明
  欢迎转载,但请保留文章原始出处:) 
    博客园:http://www.cnblogs.com

    农民伯伯: http://over140.cnblogs.com  

 

正文

由于没有找到嵌套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。

 

你可能感兴趣的文章
两种attach to process的方法
查看>>
WCF如何使用X509证书(安装和错误)(二)
查看>>
遍历聚合对象中的元素——迭代器模式(二)
查看>>
Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
查看>>
iOS中--NSArray调用方法详解 (李洪强)
查看>>
java异步操作实例
查看>>
Centos6.8防火墙配置
查看>>
php and web service with wsdl
查看>>
collection set
查看>>
JAVA多线程的问题以及处理【转】
查看>>
【Java面试题】10 abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?...
查看>>
简单记录一次ORA-00600 kcratr_nab_less_than_odr
查看>>
【视频教程】一步步将AppBox升级到Pro版
查看>>
[原]好玩的Linux,关于时间cal命令
查看>>
[ssh]SSH反向通道端口转发,在本地调试微信支付回调
查看>>
Linux学习之CentOS(十八)--与Linux文件和目录管理相关的一些重要命令②
查看>>
vim一些挺方便的功能
查看>>
开源Java时间工具类Joda-Time体验
查看>>
如何新建UML2项目?详细操作步骤介绍
查看>>
[精讲17] 组策略
查看>>