Beispiel #1
0
        internal void SetPage(Page newRoot)
        {
            var layout = false;

            if (Page != null)
            {
                _renderer.RemoveAllViews();

                foreach (IVisualElementRenderer rootRenderer in _navModel.Roots.Select(GetRenderer))
                {
                    rootRenderer.Dispose();
                }
                _navModel = new NavigationModel();

                layout = true;
            }

            if (newRoot == null)
            {
                return;
            }

            _navModel.Push(newRoot, null);

            Page          = newRoot;
            Page.Platform = this;
            AddChild(Page, layout);

            Application.Current.NavigationProxy.Inner = this;

            _toolbarTracker.Target = newRoot;

            UpdateActionBar();
        }
Beispiel #2
0
        internal void SetPage(Page newRoot)
        {
            var layout = false;
            List <IVisualElementRenderer> toDispose = null;

            if (Page != null)
            {
                _renderer.RemoveAllViews();

                toDispose = _navModel.Roots.Select(Android.Platform.GetRenderer).ToList();

                _navModel = new NavigationModel();

                layout = true;
            }

            if (newRoot == null)
            {
                return;
            }

            _navModel.Push(newRoot, null);

            Page          = newRoot;
            Page.Platform = this;
            AddChild(Page, layout);

            Application.Current.NavigationProxy.Inner = this;

            _toolbarTracker.Target = newRoot;

            UpdateActionBar();

            if (toDispose?.Count > 0)
            {
                // Queue up disposal of the previous renderers after the current layout updates have finished
                new Handler(Looper.MainLooper).Post(() =>
                {
                    foreach (IVisualElementRenderer rootRenderer in toDispose)
                    {
                        rootRenderer.Dispose();
                    }
                });
            }
        }