fragment切换

    xiaoxiao2021-03-25  76

    借鉴了某位大神的代码,总结了android中fragment的切换,可能有更好的方式,这只是其中一种。具体看代码

     FragmentTransaction ft =getSupportFragmentManager().beginTransaction();

            //判断当前的Fragment是否为空,不为空则隐藏

            if (null != mCurrentFrgment) {

                ft.hide(mCurrentFrgment);

            }

            //先根据Tag从FragmentTransaction事物获取之前添加的Fragment

            Fragment fragment =getSupportFragmentManager().findFragmentByTag(list.get(index).getClass().getName());

     

            if (null == fragment) {

                //如fragment为空,则之前未添加此Fragment。便从集合中取出

                fragment = list.get(index);

            }

            mCurrentFrgment = fragment;

     

            //判断此Fragment是否已经添加到FragmentTransaction事物中

            if (!fragment.isAdded()) {

                ft.add(R.id.framelayout, fragment,fragment.getClass().getName());

            } else {

                ft.show(fragment);

            }

            ft.commit();

    总结:先创建一个fragment作为当前的fragment,判断是否为空,若不为空,则隐藏(显示其他fragment);接着拿出对应切换的fragment(通过findFragmentByTag方式),如果为空,则表示是第一次显示,从集合中拿出;若不为空,则将其赋值给当前fragment,并且判断是否已经加入到事务中,没有,则加入,有,则显示;最后提交事务

    转载请注明原文地址: https://ju.6miu.com/read-14790.html

    最新回复(0)