Android开发之Fragment的加载方式

Posted mangues

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发之Fragment的加载方式相关的知识,希望对你有一定的参考价值。

android开发之Fragment的加载方式

1.利用replace
2.利用show、hide
3.回退栈

1.利用replace

频繁地replace Fragment来切换,会不断创建新实例,销毁旧的,浪费资源,无法重用。

在onCreate 里面初始化一个fragmentOne

 FragmentManager fragmentManager = getSupportFragmentManager();
 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
 fragmentTransaction.add(R.id.id_content,fragmentOne).show(fragmentOne).commit();

需要切换fragmentTwo的时候

 FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
 ft.replace(R.id.id_content, fragmentTwo);
 ft.commit();

2.利用show、hide

如果Fragment需要重用或者不断切换,可以使用该方法提高性能。

if (!fragment.isAdded())  //判断有没有加载过

    getSupportFragmentManager().beginTransaction().hide(temp).add(R.id.id_content, fragment).commit();
else
    getSupportFragmentManager().beginTransaction().hide(temp).show(fragment).commit();

3.回退栈

像Activity一样通过栈的方式来管理Fragment,和replace相比 增加了栈的管理

fragmentOne 转 FragmentThree FragmentThree 返回fragmentOne 实现

fragmentOne跳转:

  FragmentThree fragment = new FragmentThree();
  FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
  FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
  fragmentTransaction.replace(R.id.id_content,fragment);
  //将当前的事务添加到了回退栈
  fragmentTransaction.addToBackStack(null);
  fragmentTransaction.commit();

FragmentThree返回上一层:

 FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
 fragmentManager.popBackStack();

案例地址

AndroidLearnAgain
com.mangues.fragment 包下

以上是关于Android开发之Fragment的加载方式的主要内容,如果未能解决你的问题,请参考以下文章

Android开发之漫漫长途 Fragment番外篇——TabLayout+ViewPager+Fragment

Android实战开发篇 ViewPager+Fragment 取消预加载

android开发之viewpager and Fragment

Android移动应用开发之Fragment

Android移动应用开发之Fragment

Android开发之Fragment的替换显示