Fragment(四)——Fragment动态使用

前言

在学习完Fragment的静态使用和Fragment常用API后,这节我们就来学习下Fragment的动态加载吧。

今天涉及的内容:

  1. Fragment动态加载前的准备
  2. Fragment动态加载实例
  3. Fragment动态加载和静态加载的区别
  4. 参考文章

先来波效果图


1.gif

一. Fragment动态加载前的准备

在动态加载Fragment之前,我们先要在FragmentActivity对应的activity_main.xml中添加一个帧布局作为Fragment的容器。以我写的一个activity_main.xml代码为例:





    

    

以上代码中 FrameLayout 即为Fragment要显示的容器。

二.Fragment动态加载实例

Fragment的动态加载基本上用到两个方法,一个是 add(),一个是replace()。其中add()多用于"显示当前Fragment,隐藏其他Fragment"的情况,而replace()则多用于"显示当前Fragment,关闭上一个Fragment"的情况。由于"显示当前Fragment,隐藏其他Fragment"的情况用得比较多,所以下面以add()动态加载为例。
下面以FragmentActivity中动态加载FragmentA和FragmentB为例。

2.1 写一个 FragmentA,继承Fragment

FragmentA代码如下:

public class FragmentA extends Fragment {

    private View mLayoutView;
    private Context mContext;
    private TextView mTvTestA;

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        this.mContext=context;
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        mLayoutView = inflater.inflate(R.layout.fragment_a, container, false);

        initView();
        initData();
        setListener();

        return mLayoutView;
    }

    private void initView(){
        mTvTestA=mLayoutView.findViewById(R.id.tv_a);
    }

    private void initData(){
        Bundle bundle=getArguments();
        String value="";
        if(bundle!=null) {
             value = bundle.getString("A");
        }
        mTvTestA.setText("我是 A Fragment:  "+value);
    }

    private void setListener(){}

}
2.2 FragmentA对应布局

FragmentA对应布局代码fragment_a.xml代码如下:





    


2.3 FragmentB类及对应xml文件

FragmentB代码与FragmentA基本一样,布局也一样,只不过把对应的a改成了b,这里就不做多的解释了。

2.4 在MainActivity中的使用

你可能感兴趣的:(Fragment(四)——Fragment动态使用)