zoukankan      html  css  js  c++  java
  • 碎片

    简介:

    碎片(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);
        }
    
    文章部分内容摘自网络和图书,如有侵权,请联系我。
  • 相关阅读:
    java的集合框架不得不说
    Java集合框架学习总结
    Java集合框架的知识总结(1)
    Java集合框架1
    Java中常见的集合框架
    Java中的集合框架
    浅谈JAVA集合框架
    Java集合框架 看过来
    My Dream---------0.001版本
    数组(插入算法[int])
  • 原文地址:https://www.cnblogs.com/-Tiger/p/7502077.html
Copyright © 2011-2022 走看看