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
浙公网安备 33010602011771号