public Fragment Enter(string gameObjectName, FragmentIntent intent)
        {
            Fragment nextFragment = FindFragmentByName(gameObjectName);

            Enter(ref nextFragment, intent);

            return(nextFragment);
        }
        public Fragment Enter(string gameObjectName, bool isDoAnimation)
        {
            FragmentIntent intent = new FragmentIntent();

            intent.isDoAnimation = isDoAnimation;

            return(Enter(gameObjectName, intent));
        }
        public void Enter(ref Fragment nextFragment, bool isDoAnimation)
        {
            FragmentIntent intent = new FragmentIntent();

            intent.isDoAnimation = isDoAnimation;

            Enter(ref nextFragment, intent);
        }
        public void Enter(ref Fragment nextFragment, FragmentIntent intent)
        {
            Fragment activeFragment = GetTopFragment();

            //先要显示下一个 让界面加载出来 再显示动画
            switch (intent.launchMode)
            {
            case FragmentIntent.FLAG_CLEAR_TOP:

                bool isInStack = fragmentStack.Contains(nextFragment);
                if (isInStack)
                {
                    ClearTopFragments(nextFragment);
                }

                //不在显示栈中要进栈
                EnterSpecificFragment(ref nextFragment, !isInStack);

                break;

            case FragmentIntent.FLAG_NEW_INSTANCE:

                EnterSpecificFragment(ref nextFragment, true);

                break;

            case FragmentIntent.FLAG_SINGLE_INSTANCE:

                isInStack = fragmentStack.Contains(nextFragment);
                if (isInStack)
                {
                    FragmentExitStack(nextFragment, false);
                }

                EnterSpecificFragment(ref nextFragment, true);

                break;
            }

            nextFragment.OnIntent(intent.extra);

            if (intent.isDoAnimation)
            {
                GetFragmentAnimator().DoAnimation(nextFragment, activeFragment, () =>
                {
                    ExitSpecificFragment(activeFragment, false);
                });
            }
            else
            {
                ExitSpecificFragment(activeFragment, false);
            }
        }