Fragment的初级应用

Fragment的初级应用分类

一.什么是Fragment

1.Fragment作为Activity界面的一部分组成出现,可以在一个Activity中同时出现多个Fragment,并且一个Fragment亦可在多个Activity中使用.
2.在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace()){其中remove()初学的我们还未见过}
3.Fragment也可以叫为“片段”,它可以表示Activity中的行为或用户界面部分。

二.用Fragment能解决什么问题

1.通过将 Activity 布局分成片段,您可以在运行时修改 Activity 的外观,并在由 Activity 管理的返回栈中保留这些更改。如果仅仅只有Activity布局,那是不够的,不仅在手机上有一套布局,同时在平板上还需要设计一套布局,那样维护起来也麻烦,代码上也有一定的冗余,对于APP包的大小也有一定的压力。Fragment的优势是布局在不同设备上的适配。
2.代码复用。特别适用于模块化的开发,因为一个Fragment可以被多个Activity嵌套,有个共同的业务模块就可以复用了,是模块化UI的良好组件。可控性。Fragment可以像普通对象那样自由的创建和控制,传递参数更加容易和方便,也不用处理系统相关的事情,显示方式、替换、不管是整体还是部分,都可以做到相应的更改。

三.Fragment静态加载方法

1.新建类继承Fragment
2.重写OnCreatview
3.使用LayoutInflater对象中的inflate方法绑定布局和控件
4.在Activity对应的布局文件中通过标签引用

package com.lenovo.zy.fragmentde;

import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.lenovo.zy.fragmentde.adapter.MyPagerAdapter;

import java.util.ArrayList;
import java.util.List;

public class WxActivity extends AppCompatActivity implements View.OnClickListener{
    private Button contactBtn;
    private Button friendBtn;
    private Button newsBtn;

    private ViewPager viewPager;

    private ContactFragment contactFragment;
    private FriendFragment3 friendFragment3;
    private NewsFragment newsFragment;

    private List<Fragment>fragmentList=new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wx);

        bindID();

        contactFragment=new ContactFragment();
        friendFragment3=new FriendFragment3();
        newsFragment=new NewsFragment();

        fragmentList.add(contactFragment);
        fragmentList.add(friendFragment3);
        fragmentList.add(newsFragment);

        MyPagerAdapter adapter=new MyPagerAdapter(getSupportFragmentManager(),fragmentList);
        viewPager.setAdapter(adapter);
    }

    private void bindID() {

        contactBtn= findViewById(R.id.contact_btn);
        friendBtn=findViewById(R.id.friend_btn);
        newsBtn=findViewById(R.id.news_btn);
        viewPager=findViewById(R.id.wx_btn);

        contactBtn.setOnClickListener(this);
        friendBtn.setOnClickListener(this);
        newsBtn.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.contact_btn:
                viewPager.setCurrentItem(0);
                break;
            case R.id.friend_btn:
                viewPager.setCurrentItem(1);
                break;
            case R.id.news_btn:
                viewPager.setCurrentItem(2);
                break;

        }
    }
}

四.Fragment动态加载方法

1.新建类继承Fragment
2.重写OnCreatview方法
3.使用LayoutInflater对象中的inflate方法绑定布局和控件
4.使用FragmentManager和FragmentTransaction对象进行动态加载

package com.lenovo.zy.fragmentde;

import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.lenovo.zy.fragmentde.adapter.MyPagerAdapter;

import java.util.ArrayList;
import java.util.List;

public class WxActivity extends AppCompatActivity implements View.OnClickListener{
    private Button contactBtn;
    private Button friendBtn;
    private Button newsBtn;

    private ViewPager viewPager;

    private ContactFragment contactFragment;
    private FriendFragment3 friendFragment3;
    private NewsFragment newsFragment;

    private List<Fragment>fragmentList=new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wx);

        bindID();

        contactFragment=new ContactFragment();
        friendFragment3=new FriendFragment3();
        newsFragment=new NewsFragment();

        fragmentList.add(contactFragment);
        fragmentList.add(friendFragment3);
        fragmentList.add(newsFragment);

        MyPagerAdapter adapter=new MyPagerAdapter(getSupportFragmentManager(),fragmentList);
        viewPager.setAdapter(adapter);
    }

    private void bindID() {

        contactBtn= findViewById(R.id.contact_btn);
        friendBtn=findViewById(R.id.friend_btn);
        newsBtn=findViewById(R.id.news_btn);
        viewPager=findViewById(R.id.wx_btn);

        contactBtn.setOnClickListener(this);
        friendBtn.setOnClickListener(this);
        newsBtn.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.contact_btn:
                viewPager.setCurrentItem(0);
                break;
            case R.id.friend_btn:
                viewPager.setCurrentItem(1);
                break;
            case R.id.news_btn:
                viewPager.setCurrentItem(2);
                break;

        }
    }
}

五.ViewParger+Fragment实现页卡滑动

package com.lenovo.zy.fragmentde.adapter;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.List;

/**
 * Created by pc on 2018/3/6.
 */

//public class MyPagerAdapter extends FragmentPagerAdapter{
//    public MyPagerAdapter(FragmentManager fm) {
//        super(fm);
//    }
    public class MyPagerAdapter extends FragmentPagerAdapter{
        private List<Fragment>mFragmentLIst;


    public MyPagerAdapter(FragmentManager fm,List<Fragment>fragmentList){
        super(fm);
        this.mFragmentLIst=fragmentList;
    }
    @Override
    public Fragment getItem(int position) {
        return mFragmentLIst.get(position);
    }

    @Override
    public int getCount() {

        return mFragmentLIst.size();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值