碎片

简介:

碎片(Fragment)是嵌入到活动当中。

它和活动类型同样也能包含布局,也有自己的生命周期。

碎片.jpg

图片来自 http://www.runoob.com/w3cnote/android-tutorial-fragment-base.html

1、使用FrameLayout来放碎片

 <FrameLayout
        android:id="@+id/frame_layout"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp">

2、碎片

public class FirstFragment  extends Fragment {
    private  View view;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        if(view==null)
        view=inflater.inflate(R.layout.first_layout,container,false);
        return  view;
    }
}

3、将所有碎片定义为全局变量

    private FirstFragment fg_First=new FirstFragment();
    private SecondFragment fg_Second=new SecondFragment();
    private ThirdFragment fg_Third=new ThirdFragment();
    @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
          
        setContentView(R.layout.activity_main);
        replaceFragment(fg_First);
    }

    public void onClick(View v) {
          switch(v.getId()) {
              case R.id.btnFirst:
                  replaceFragment(fg_First);
              break;
              case R.id.btnSecond:
                  replaceFragment(fg_Second);
                  break;
              case R.id.btnThird:
                  replaceFragment(fg_Third);
                  break;
          }
    }
    private void replaceFragment(Fragment fragment){
        // 1、创建碎片管理器
        FragmentManager fragmentManager=getSupportFragmentManager();
        // 2、开启一个事务
        FragmentTransaction transaction=fragmentManager.beginTransaction();
        // 3、将指定容器中的碎片,替换掉
        transaction.replace(R.id.frame_layout,fragment);
           //返回栈
        //transaction.addToBackStack(null);
        // 4、提交事务
        transaction.commit();
    }


另外一种方式

private FirstFragment fg_first;

        if(fg_first==null){
            fg_first=new FirstFragment();
            fragmentTransaction.add(R.id.activity_main_frame_layout,fg_first);
         }else {
            fragmentTransaction.show(fg_first);
         }
            //最后记得提交修改
            fragmentTransaction.commit();


    void hideAllFragment(FragmentTransaction fragmentTransaction ){
        if(fg_first!=null)
        fragmentTransaction.hide(fg_first);
        if(fg_second!=null)
        fragmentTransaction.hide(fg_second);
        if(fg_third!=null)
        fragmentTransaction.hide(fg_third);
    }
文章部分内容摘自网络和图书,如有侵权,请联系我。
原文地址:https://www.cnblogs.com/-Tiger/p/7502077.html