Android - Fragment

1、静态添加:

  Activity布局文件中使用 fragment 标签添加;

2、动态添加:

  1)使用FragmentLayout 作为Fragment View容器

  2)通过FragmentManager 管理 Fragment

FragmentManager fm=getFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
//通过ft进行 add\remove\replace\detach\hide 操作:
ft.add(R.id.fragment_container,new OneFragment);
ft.commit();

  3)管理Fragment回退栈: Activity管理Fragment回退栈来保存每次Fragment事务发生的变化,如果将Fragment任务添加到回退栈,当用户点击后退按钮时,将看到上一次保存的Fragment;  

  replace : 如果不添加事务到回退栈,被替换的Fragment实例会被销毁;添加到回退栈,fragment实例不会被销毁,视图层次依然会被销毁(即会调用onDestroyView)

FragmentTransaction ft=getFragmentManager().beginTransaction();
//由TwoFragment 替换 OneFragment
ft.replace(R.id.fragment_container, new TwoFragment());
//将 OneFragment 放入back stack
ft.addToBackStack(null);  
ft.commit();

//先隐藏当前Fragment,将事务添加到回退栈:视图层次将保留;
ft.hide(this); 
ft.add(R.id.fragment_container,new TwoFragment()); 
ft.addToBackStack(null); 
ft.commit();

  

3、Fragment 通信

  fragment之间无法直接通信,需要通过它们所依附的Activity;

   1)Activity中包含自己管理的Fragment的引用,通过引用调用Fragment public方法;

   2)通过FragmentManager findFragmentByTag()或者findFragmentById()获得Fragment引用;

 

4、如何处理运行时配置发生变化

  屏幕发生旋转时,默认的savedInstanceState会存储一些数据,包括Fragment实例;

  所以Activity onCreate()中只有在savedInstanceState==null时,才进行创建Fragment实例;

 

5、Fragmeny与ActionBar和MenuItem集成

  Fragment可以添加自己的MenuItem到Activity的ActionBar或者可选菜单中。

  a、在Fragment的onCreate中调用 setHasOptionsMenu(true);

  b、然后在Fragment中实现onCreateOptionsMenu

  c、如果希望在Fragment中处理MenuItem的点击,也可以实现onOptionsItemSelected;当然了Activity也可以直接处理该MenuItem的点击事件。

  

  

Fragment 好文:http://blog.csdn.net/lmj623565791/article/details/37970961

  

posted @ 2016-01-26 15:54  chenyizh  阅读(147)  评论(0)    收藏  举报