Fragment可以当成Activity中的模块,这个模块有自己的布局,有自己的生命周期,单独处理自己的输入,在Activity运行的时候,它可以加载或者移除Fragment模块。Fragment的生命周期与activity有点像,但是又有点不一样,多了好几个。
而activity的生命周期只有6个,分别是onCreate(), onStart(), onResume(), onPause(),onRestart(),onDestroy()
图片引用来源:http://www.cnblogs.com/thinkland001/archive/2011/01/21/1940930.html
当你想要实现Fragment时,你可以在某个acitivity对应的xml中加上<framelayout></framelayout>作为容器,在java中,将其加入到ViewGroup,从而得到你想要的效果。似乎还可以直接在xml中声明标签<fragment>
用了这位博主的例子以及课上的练习做了一些了解
https://www.cnblogs.com/codingblock/p/4808809.html
博主的例子比较简单好理解!!
要在activity中管理fragment,需要用到FragmentManager(注意,这是个抽象类)
想要获取FragmentManager,可通过activity的 getSupportFragmentManager()(v4扩展包)或者activity的getFragmentManager()(app包)
那到底activity怎么实现Fragment的添加与剔除呢?
大致是这样子的:
FragmentManager fragmentManager =getFragmentManager();
FragmentTransaction fragmentTransaction;
....
public void onCreate(Bundle savedInstanceState){
transaction = fragmentManager.beginTransaction();
Fragment fragment = new HomeFragment();//这是自己写的类,继承了Fragment
transaction.add(R.id.container, mainfragment);//添加第一个Fragment
transaction.commit();
....
switch (checkedId) {
case R.id.radio0://当点击了radio0时
transaction = fragmentManager.beginTransaction();//事务开始
Fragment homeFragment = new HomeFragment();//这是自己写的类,继承了Fragment
transaction.replace(R.id.container, homeFragment);//这个之前界面已有一个fragment,
//此时要在container中先前的fragment先删掉,再添加homeFragment
transaction.commit();//事务提交
break;
case R.id.radio1:
transaction = fragmentManager.beginTransaction();
Fragment sortFragment = new SortFragment();//这是自己写的类,继承了Fragment
transaction.replace(R.id.container, sortFragment);
transaction.commit();
break;
}
....
// LayoutInflater作用是将layout的xml布局文件实例化为View类对象。
public class SortFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_sort, null);
return view;
}
}
萌新的第二篇android,冲鸭!希望每周都能更新至少一篇!!