Fragment也有自己的生命周期,但取决于其所附属Activty的生命周期,如果Activty的生命周期是stop,则fragment是不能启动的,如果activity的生命周期destroy,则清除所有Fragment,详见下图
Fragment,首先要创建一个Fragment的子类,并且复写Fragment的生命周期方法,当然不用所有方法都Override,根据需要复写即可。一般来说onCreateView方法必须复写:当Fragment绘制界面时会调用该方法。该方法必须返回一个View,该View也就是Fragment 所显示的View.此处也可以把Fragment看做是一个封装了一系列控件的View.
/** * Fragment的生命周期演示 * * @author Keno * */ public class Fragment_Life extends Fragment {
<pre name="code" class="java">@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_life, null); tvLife = (TextView) view.findViewById(R.id.tv_life_fragment); Log.i("fragment", lifeMethod); return view; }
关于fragment布局,可以在activity_main.xml文件中指定位置放一个RelativeLayout或LinearLayout布局文件,创建fragment时,指定容器id就能把fragment存于指定位置
a)通过java代码动态加载
Fragment,首先实例化一个Fragment的管理对象FragmentManager,注意自动自带和v4包的区别
(Fragment两种加载方式)Activity.getFragmentManager()
and Fragment.getFragmentManager()
// 创建 Fragment管理器对象:管理和这个Activity相关的Fragment fm = getSupportFragmentManager(); // 实例化自定义Fragment Fragment_Life fragment = new Fragment_Life(); // 创建Fragment事务 transaction = fm.beginTransaction(); // 加载fragment 1.被填充容器id; 2.fragment对象; 3.填入fragment文件的描述 transaction.add(R.id.ll_fragment_base, fragment, "It's my firstFragment"); // 提交事务 transaction.commit();
<fragment android:id="@+id/fragment_test1" android:name="com.keno.android.fragment.FragmentLayout" android:layout_width="match_parent" android:layout_height="200dp"> </fragment>