Fragment

Fragment是可以嵌在Activity**中的UI界面,它可以作为活动的子界面,动态的更新,我们只需要维护活动中的内容即可

  • 创建一个碎片:

    需要创建碎片的布局,并且实例化碎片类,如下为例:

    public class AnotherRigthFragment extends Fragment {
        @Nullable
        @Override
        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.another_right_layout,container,false);
            return view;
        }
    }
    

    一般需要重写onCreatView()方法,并通过inflate引入布局文件

  • 引入碎片:

    在活动的布局中新建碎片布局, 通过android:name属性来指定碎片的实例(class),就可以引入碎片了

  • 动态切换碎片:

    利用FragmentManger类和FragmentTransaction的对象可以在指定的容器中加载碎片, 通过逻辑设置加载不同的碎片,就实现了动态切换了,核心代码编写到一个方法中,如下:

    // 把需要加载的碎片作为Fragment参数传入
    private void replaceFragment(Fragment fragment){
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // 启动事件
     		// 要传入的是碎片的实例,所以我们的碎片都用类封装好
        	fragmentTransaction.replace(R.id.right_layout,fragment);
    		 // 返回栈的状态一般用null描述, 这样在返回过程中回溯到上一个碎片
        	fragmentTransaction.addToBackStack(null);
        	fragmentTransaction.commit();
        }
    

    通过使用限定符,我们还可以让不同的分辨率的屏幕加载不同的布局; 我们在res文件夹下建立layout-xxx, xxx为限定符,如large, small等;
    在此文件夹下建立和layout文件夹下的同名布局, 可以自由调整不同分辨率下采用的布局方式

  • Fragment生命周期:

    Fragment的生命周期和活动的生命周期类似,并且紧密相连; 当碎片可见,并且关联的活动处于运行状态时,碎片也处于运行状态 ; 活动处于暂停状态和停止状态,碎片也处于同样的状态; 但碎片可以在活动处于运行状态的时候, 通过执行FragmentTransaction类下的remove replace方法移除活动,活动就处于销毁状态了.

和活动的生命周期相比,增加了一些方法, 下图来自 《第一行代码》 详细阐述了这些方法的应用

posted @ 2021-01-29 23:46  落月江树  阅读(124)  评论(0)    收藏  举报