首页 > 其他 > 详细

利用Fragment将多个页面集成到一个Activity中

时间:2021-04-27 20:28:56      阅读:21      评论:0      收藏:0      [点我收藏+]

什么是Fragment?                                                

Fragment可以看作是Activity,只不过通过Fragment可以实现一个Activity中含有多个界面

 

 

将多个Fragment集成到一个Activity的流程      

1.创建一个或多个继承了Fragment的类

2.创建一个继承了FragmentPagerAdapter的适配器

3.通过该适配器把多个Fragment集成到Activity的ViewPager容器中(通过ViewPager可以实现左右滑动)

技术分享图片

 

 

 

简单实例                                                              

1.界面布局

只需要在Activity中需要集成多个界面的地方放置一个ViewPager

例:中间是ViewPager,下面是一个radioGroup(可忽略)

技术分享图片

 

2.创建多个继承了Fragment类并重写其onCreateView方法

把该类看作Avtivity即可

public class AAAFragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        //获得当前fragment对应的layout
        View view = inflater.inflate(R.layout.activity_aaa, container, false);

        return view;
    }
}

 

3.创建一个继承了FragmentPagerAdapter的适配器

public class MyFragmentPagerAdapter extends FragmentPagerAdapter {     //继承FragmentPagerAdapter

    List<Fragment> fragmentList;        //Fragment集合

    public MyFragmentPagerAdapter2(FragmentManager fm, List<Fragment> fragmentList) {
        super(fm);
        this.fragmentList=fragmentList;             //在new该适配器的时候传入Fragment集合
    }

    @Override
    public Fragment getItem(int position) {         //通过索引获取单个Fragment
        return fragmentList.get(position);
    } 

    @Override
    public int getCount() {                         //获得Fragment集合Size
        return fragmentList.size();
    }
}

 

 

4.通过适配器把多个Fragment集成到Activity的ViewPager容器中

public class MainActivity extends AppCompatActivity {
    List<Fragment> fragmentList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        initFragmentList();         //初始化Fragment集合

        ViewPager vp = (ViewPager) findViewById(R.id.viewPager);        //获得ViewPager容器
        
        //把Fragment集合放到适配器中
        MyFragmentAdapter adapter = new MyFragmentAdapter(getSupportFragmentManager(), fragmentList);
        //给ViewPager设置适配器
        vp.setAdapter(adapter);
    }


    protected void initFragmentList(){          //初始化Fragment集合
        fragmentList = new ArrayList<Fragment>();
        fragmentList.add(new AAAFragment());
        fragmentList.add(new BBBFragment());
        fragmentList.add(new CCCFragment());
    }
}

 

 

效果如下

技术分享图片   技术分享图片  技术分享图片

 

其他细节                                                          

关于ViewPager:

  1.ViewPager可以使用户左右滑动切换当前界面

  2.ViewPager直接继承了ViewGroup类,所以他是容器类

 

关于FragmentPagerAdapter与FragmentStateAdapter区别:

  1.前者会将生成的每一个Fragment保存在内存中,适用于Fragment较少的情况

  2.后者是用一个生成一个,适用于Fragment较多的情况

 

利用Fragment将多个页面集成到一个Activity中

原文:https://www.cnblogs.com/zddsl/p/14709988.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!