以下为本人日常使用Fragment时遇到的一些基础知识点,记录以加深印象:

1. xml layout中静态添加Fragment时,宿主Activity必须继承FragmentActivity

2. 代码中动态加载Fragment时,Fragment显示的区域为layout中的FrameLayout

 

3.Fragment中根据layout生成UI的代码为:

@Overridepublic View onCreateView(LayoutInflater inflater,@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {// TODO Auto-generated method stubView view = inflater.inflate(R.layout.fragment_main,container, false);return view;}

4. Activity中动态添加Fragment的简单代码为:
getFragmentManager().beginTransaction().replace(R.id.frame_container, mFragment).commit();
5.加载Fragment的时候可以添加动画效果:
getFragmentManager().beginTransaction().setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right).replace(R.id.frame_container, mFragment).commit();
6.Fragment加载其它Fragment时通过getActivity().getSupportFragmentManager()获取FragmentManager对象

7. Activity或者Fragment与其他Fragment传值:

Fragment fragment = new Fragment();Bundle bundle = new Bundle();  bundle.putString("argument", value);  fragment.setArguments(bundle);  
8.单一Fragment被复用时,要保证每次创建的唯一性,同时来回切换时还要避免反复创建,我们可以通过创建它时传递一个tag参数来标记,这样就可以通过tag来获取了:
private void showFragment(int position,String tag){FragmentManager fm = getFragmentManager();FragmentTransaction transaction = fm.beginTransaction();                 Fragment currentFragment = fm.findFragmentById(R.id.frame_container);                Fragment toFragment = fm.findFragmentByTag(tag);                if(toFragment!=null)        {        if(!toFragment.isVisible())        {                transaction.hide(currentFragment);            transaction.show(toFragment);            transaction.commit();        }        }        else        {        transaction.hide(currentFragment);        Fragment fragment = new Fragment();        transaction.add(R.id.frame_container,fragment, tag);        transaction.commit();        }       }
9. Fragment需要创建menu时:
需要先在onCreate()方法里添加setHasOptionsMenu(true);, 然后覆写 onCreateOptionsMenu方法:
@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setHasOptionsMenu(true); } @Override    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {         menu.clear();//清除原先activity的menu        inflater.inflate(R.menu.work, menu);//加载自己的menu        super.onCreateOptionsMenu(menu, inflater);}







更多相关文章

  1. Android(安卓)gradle 动态添加模块依赖
  2. Android(安卓)studio 3.1 集成ButterKnife8.8.1问题总结
  3. Android(安卓)cocos2d-x开发(三)之创建Android工程和编译
  4. 【Android(安卓)Developers Training】 20. 创建一个Fragment
  5. android自定义相机添加自定义水印
  6. 动态添加权限
  7. android fragments
  8. Android实现多图选择
  9. eclipse 中设置android emulator 选项

随机推荐

  1. Android(安卓)R system_ext动态扩展分区
  2. Android手机开发:图片的放大和缩小显示Ima
  3. 可循环显示图像的Android(安卓)Gallery组
  4. Android(安卓)跨进程SharedPreferences异
  5. Android中判断app是否连接网络
  6. android 4.0 browser useragent debug
  7. Android(安卓)使用MediaPlayer播放assets
  8. android页面切换动画
  9. android 打开app先显示欢迎界面后自动跳
  10. com.android.ide.common.signing.Keytool