Fragment的使用总结
简述:
你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了。更为重要的是,你可以动态的添加、替换和移除某个Fragment。
1.Fragment的生命周期onAttach(Activity)
当Fragment与Activity发生关联时调用。
onCreateView(LayoutInflater, ViewGroup,Bundle)
创建该Fragment的视图
onActivityCreated(Bundle)
当Activity的onCreate方法返回时调用
onDestoryView()
与onCreateView想对应,当该Fragment的视图被移除时调用
onDetach()
与onAttach相对应,当Fragment与Activity关联被取消时调用
注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现
两种使用方法
1.静态注册:
把Fragment 当成一个控件直接在布局文件中添加
2.动态注册
动态使用Fragment三步走:
(1)android.app.Fragment 主要用于定义Fragment
Fragment fragment = new Fragment();
(2)android.app.FragmentManager主要用于在Activity中操作Fragment
getFragmentManager() //v4中,getSupportFragmentManager
(3)android.app.FragmentTransaction保证一些列Fragment操作的原子性
FragmentTransaction transaction =fm.benginTransatcion();//开启一个事务
private void initDefaultFrament() { //获得一个布局管理器,主要在Activity中操作Fragment fragmentManager = getSupportFragmentManager(); //开启一个事务 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); //给公共容器中添加碎片 fragmentTransaction.add(R.id.GONG,fragmentone); //提交事务 fragmentTransaction.commit(); fragmentnew=fragmentone; }常用逻辑和方法
public void onClick(View v) { FragmentTransaction fragmentTransaction1 = fragmentManager.beginTransaction(); switch (v.getId()){ case R.id.button: if(fragmentone.isAdded()){ fragmentTransaction1.hide(fragmentnew).show(fragmentone).commit(); }else{ //隐藏当前页面,然后添加新的页面,提交 fragmentTransaction1.hide(fragmentnew).add(R.id.GONG,fragmentone).commit(); } fragmentnew=fragmentone; break; case R.id.button2: if(fragmenttwo.isAdded()){ fragmentTransaction1.hide(fragmentnew).show(fragmenttwo).commit(); }else{ //隐藏当前页面,然后添加新的页面,提交 fragmentTransaction1.hide(fragmentnew).add(R.id.GONG,fragmenttwo).commit(); } fragmentnew=fragmenttwo; break; }