23.android 简单的TabLayout+ViewPager+Fragment的复用

导读:本篇文章讲解 23.android 简单的TabLayout+ViewPager+Fragment的复用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

//—————————1.第一步 建个类让它继承Fragment 

public class MyFragmentFuYong extends Fragment implements View.OnClickListener {

//———————–2.第二步 重写onCreate方法和onCreateView方法

//————————3.第三步 写个复用的方法,参数string就行

//new 出本类对象,通过Bundle传值 最后返回一个myFragmentFuYong本类对象

//注意这个方法是静态的  为了让别的类可以调用到

//复用
public static Fragment getFuYong(String string) {
    MyFragmentFuYong myFragmentFuYong = new MyFragmentFuYong();
    Bundle bundle = new Bundle();
    bundle.putString("string", string);
    myFragmentFuYong.setArguments(bundle);
    return myFragmentFuYong;
}

 

//—————————-4.第四步onCreate方法得到Bundle的值,赋值给name,name设成全局的,判断的话会用到

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle arguments = getArguments();
    if (arguments != null) {
        name = arguments.getString("string");
    }
}

//那么到现在这个string都是空的,到底怎么给string赋值呢,别着急,一步步来

//—————————-5.第五步,在你的Activity或fragment页面(你要复用的地方)给string赋值

 List<Fragment> mFragmentList=new ArrayList<>();
 List<String> mList=new ArrayList<>();
TabLayout mTab = view.findViewById(R.id.mTab);
ViewPager mViewPager = view.findViewById(R.id.mViewPager);

mList.add("页面一");
mList.add("页面二");
mList.add("页面三");
mList.add("页面四");
mList.add("页面五");
//调用静态的MyFragmentFuYong.getFuYong()方法,for循环添加集合里的string数据

for (int i = 0; i < mList.size(); i++) {
//返回一个对象
    Fragment fuYong = MyFragmentFuYong.getFuYong(mList.get(i));
//fragment集合添加这个对象,fragment集合就添加了5个fragment
    mFragmentList.add(fuYong);
}
//然后是ViewPager适配器,搭配上TabLayout

FragmentApader apader = new FragmentApader(getChildFragmentManager(), mFragmentList, mList);
mViewPager.setAdapter(apader);
mTab.setupWithViewPager(mViewPager);

//顺便写上这个ViewPager适配器吧

public class FragmentApader extends FragmentPagerAdapter{
    private List<Fragment>mFragmentList;
    private List<String> mList;

    public FragmentApader(FragmentManager fm, List<Fragment> mFragmentList, List<String> mList) {
        super(fm);
        this.mFragmentList = mFragmentList;
        this.mList = mList;
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return mList.get(position);
    }
}

//——————————-fragment的复用完成,如果想每个复用的页面返回不同的布局效果,可以加判断,在onCreateView里,通过name就行

//——————————这样判断

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//先设置inflate 为空,再从下面赋值
    View inflate = null;
    //页面一
    if (name.equals("页面一")) {
        inflate = inflater.inflate(R.layout.keyilayout, null);
        initViewssss(inflate);
    }
    //页面二
    if (name.equals("页面二")) {
        inflate = inflater.inflate(R.layout.keerlayout, null);
        initViewss(inflate);
    }

    //页面三
    if (name.equals("页面三")) {
        inflate = inflater.inflate(R.layout.kesanlayout, null);
        initViewsss(inflate);
    }

//页面四
    if (name.equals("页面四")) {
        inflate = inflater.inflate(R.layout.kesilayout, null);
        initView4(inflate);
    }
//页面五
    if (name.equals("页面五")) {
        inflate = inflater.inflate(R.layout.nazhenglayout, null);
        initView(inflate);
    }


//最后统一返回一个inflate 
    return inflate;
}

//—————————————————————————–完——————————————————————————-

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/118371.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!