zoukankan      html  css  js  c++  java
  • 【Andorid X 项目笔记】动态设置ViewPager的Adapter问题(2)


    声明
      欢迎转载,但请保留文章原始出处:) 
        博客园: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。

  • 相关阅读:
    SQL Prompt 5.3.4.1
    RIA(富客户端)发展态势
    XML操作:2.LINQ TO XML(http://www.cnblogs.com/AlexLiu/archive/2008/10/27/linq.html)
    XML操作:1.XML类(http://blog.csdn.net/happy09li/article/details/7460521)
    .NET的Snk使用方法
    PictureEdit中拖放图片
    CPU与内存(经典问答)
    SQL Server 2008 Data Types and Entity Framework 4
    8086、80x86(IA-32)、64(IA-64)位CPU发展
    MVC3 Razor模板引擎
  • 原文地址:https://www.cnblogs.com/over140/p/2749715.html
Copyright © 2011-2022 走看看