1、replace()顾名思义“替换”,会销毁布局容器内的已有视图,这样会导致每次切换Fragment时都会重新初始化,浪费流量。

//获取碎片管理者fragmentManager = getSupportFragmentManager();//事务是不能共享的,每次用到都要重新开启一个事务,之后提交FragmentTransaction fragmentTransactiontwo = fragmentManager.beginTransaction();//参数:1.父容器   2.要替换的fragment。fragmentTransactiontwo.replace(R.id.framelayout, fragmentTwo);//提交事务fragmentTransactiontwo.commit();

因此,如果你有一个很高的概率会再次使用当前的Fragment,建议使用add()搭配show(),hide()使用,可以提高用户体验

2、add()是添加Fragment于容器布局中,再搭配事务对象的show()和hide()方法来显示和隐藏,它们最终是让FragmentsetVisibility(true还是false),不会调用生命周期。

     homepageFragment = new HomepageFragment();     hotFragment = new HotFragment();     meFragment = new MeFragment();     getSupportFragmentManager().beginTransaction()              .add(R.id.content_fragment_layout,homepageFragment, "homepageFragment")              .add(R.id.content_fragment_layout,hotFragment,"hotFragment")              .add(R.id.content_fragment_layout,meFragment,"meFragment")              .show(homepageFragment)              .hide(hotFragment)              .hide(meFragment)              .commit();

     在跳转前将当前的fragment隐藏,要显示的frment进行显示:

/*3、初始化底部导航菜单*/    private void initBottomNavigationView()    {        bottomNavigationView= (BottomNavigationView)findViewById(R.id.bottom_navigation);        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener()        {            @Override            public boolean onNavigationItemSelected(MenuItem item)            {                switch (item.getItemId())                {                    case R.id.bottom_navigation_homepage:                        topView.setVisibility(View.VISIBLE);                        toolbar.setVisibility(View.VISIBLE);                        getSupportFragmentManager().beginTransaction()                                .show(homepageFragment)                                .hide(hotFragment)                                .hide(meFragment)                                .commit();                        break;                    case R.id.bottom_navigation_find:                        topView.setVisibility(View.GONE);                        toolbar.setVisibility(View.GONE);                        getSupportFragmentManager().beginTransaction()                                .show(hotFragment)                                .hide(homepageFragment)                                .hide(meFragment)                                .commit();                        break;                    case R.id.bottom_navigation_me:                        topView.setVisibility(View.GONE);                        toolbar.setVisibility(View.GONE);                        getSupportFragmentManager().beginTransaction()                                .show(meFragment)                                .hide(homepageFragment)                                .hide(hotFragment)                                .commit();                        break;                }                return true;            }        });    }



更多相关文章

  1. android中Canvas使用drawBitmap绘制图片
  2. Android(安卓)studio git 中文乱码 不显示中文
  3. Android(安卓)Studio自带模版:抽屉(DrawerLayout)布局
  4. 纯Java代码写登录注册页面
  5. Android(安卓)DES AES MD5加密
  6. Android(安卓)EditText简单实现右侧点击清除
  7. Android中常见的设计模式
  8. android 多行文本显示的textView
  9. 一个android 异步多线程类介绍

随机推荐

  1. Android: Framework层理解(一)
  2. 【Android】九宫格手势锁简单实现
  3. Android开发初体验,提高Android运行效率
  4. 开发可统计单词个数的Android驱动程序(3)
  5. Android牟利之道(二)--广告平台的介绍
  6. Android中实现跨进程通信(IPC)的方式(三)
  7. Study on Android【三】--Intent消息传递
  8. Android开发人员终于在“app-构建控制台
  9. 为什么要用Android(安卓)Studio?
  10. Android中显示网络上的图片