void HideFrame(System.Action callback)
        {
            if (m_Frame != null)
            {
                m_Frame.SendMessageToAll("OnActivityBeginHide");
            }

            System.Action hideAction = () =>
            {
                callback.InvokeIfNotNull();
                if (m_Frame != null)
                {
                    m_Frame.SendMessageToAll("OnActivityEndHide");
                }
            };

            var tweener = frame != null?frame.GetComponent <AbstractTweenBehaviour>() : null;

            if (tweener != null)
            {
                LayoutRebuilder.ForceRebuildLayoutImmediate(this.transform as RectTransform);
                tweener.Tween("hide", (tag) => { hideAction.InvokeIfNotNull(); });
            }
            else
            {
                hideAction.InvokeIfNotNull();
            }
        }
        void ShowFrame(System.Action callback)
        {
            if (m_Frame != null)
            {
                m_Frame.SendMessageToAll("OnActivityBeginShow");
            }

            System.Action showAction = () =>
            {
                callback.InvokeIfNotNull();
                if (m_Frame != null)
                {
                    m_Frame.SendMessageToAll("OnActivityEndShow");
                }
            };

            if (m_Frame)
            {
                m_Frame.gameObject.SetActive(true);
            }

            var tweener = frame != null?frame.GetComponent <AbstractTweenBehaviour>() : null;

            if (tweener != null)
            {
                LayoutRebuilder.ForceRebuildLayoutImmediate(this.transform as RectTransform);
                tweener.Tween("show", (tag) => { showAction.InvokeIfNotNull(); });
            }
            else
            {
                showAction.InvokeIfNotNull();
            }
        }