Android(安卓)往activity添加fragment的三种add()方法
16lz
2021-01-25
在写
FragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.add
这几行代码的时候,android studio会自动地给我们提示。
要想区分这三个方法的区别首先我们来明确一下,fragment中生命周期中的两个函数:
onCreate()系统会在创建片段时调用此方法。您应该在实现内初始化您想在片段暂停或停止后恢复时保留的必需片段组件。onCreateView()系统会在片段首次绘制其用户界面时调用此方法。 要想为您的片段绘制 UI,您从此方法中返回的 View 必须是片段布局的根视图。如果片段未提供 UI,您可以返回 null。
接下来就是上代码验证这三种方法:
fragment的布局文件:(给fragment添加了粉红色的背景颜色)
package com.example.geekp.fragmentlifecircle;import android.app.Activity;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;/** * A simple {@link Fragment} subclass. */public class BlankFragment extends Fragment { public BlankFragment() { // Required empty public constructor } @Override public void onAttach(Activity activity) { super.onAttach(activity); System.out.println("onAttach******************************"); } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); System.out.println("onCreate******************************"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { System.out.println("onCreateView******************************"); // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_blank, container, false); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); System.out.println("onActivityCreated******************************"); } @Override public void onStart() { super.onStart(); System.out.println("onStart******************************"); }}
activity_main的布局文件:
1.add(Fragment fragment, String tag)
在activity中调用这个方法
FragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); //创建fragment但是不绘制UI transaction.add(new BlankFragment(),"");
运行结果:
fragment的UI没有被绘制
2. add(@IdRes int containerViewId, Fragment fragment)
fragment的Ui被绘制
3.add(@IdRes int containerViewId, Fragment fragment, @Nullable String tag)
UI得到绘制
从以上三种方法可以看到只有后两者会绘制UI,而且都调用了
onCreate()onCreateView()
方法,之后只有第一种没有绘制UI
更多相关文章
- Retrofit 基本用法
- Android电话相关的操作 - 打电话,接电话,挂电话
- 【已解决】Android(安卓)Studio 加载自定义properties文件出错ja
- Android四大组件易考题分析
- Android中四种实现点击事件的方法
- Android获取meta-data
- Android(安卓)Studio实现标题栏和状态栏的隐藏
- Android开发遇到的问题和小知识总结(不断更新中)
- Android(安卓)bitmap 一些常用用法