public override void RestoreState(IParcelable state, ClassLoader loader)
        {
            if (state == null)
            {
                return;
            }

            var bundle = (Bundle)state;

            bundle.SetClassLoader(loader);
            var fss = bundle.GetParcelableArray("states");

            _savedState.Clear();
            _fragments.Clear();

            var tags = bundle.GetStringArrayList("tags");

            if (tags != null)
            {
                _savedFragmentTags = tags.ToList();
            }
            else
            {
                _savedFragmentTags.Clear();
            }

            if (fss != null)
            {
                for (var i = 0; i < fss.Length; i++)
                {
                    var parcelable = fss.ElementAt(i);
                    var savedState = parcelable.JavaCast <Fragment.SavedState>();
                    _savedState.Add(savedState);
                }
            }

            var keys = bundle.KeySet();

            foreach (var key in keys)
            {
                if (!key.StartsWith("f"))
                {
                    continue;
                }

                var index = Integer.ParseInt(key.Substring(1));
                var f     = _fragmentManager.GetFragment(bundle, key);
                if (f != null)
                {
                    while (_fragments.Count() <= index)
                    {
                        _fragments.Add(null);
                    }

                    f.SetMenuVisibility(false);
                    _fragments[index] = f;
                }
            }
        }
 protected override void OnCreate(Bundle savedInstanceState)
 {
     base.OnCreate(savedInstanceState);
     if (savedInstanceState != null)
     {
         // Restore the Fragments instance
         mContent = (RunLocationListFragment)FragmentManager.GetFragment(savedInstanceState, "mContent");
     }
 }
Beispiel #3
0
        public override void RestoreState(IParcelable state, ClassLoader loader)
        {
            Bundle bundle = (Bundle)state;
            int    pages  = bundle.GetInt(_statePages);

            if (0 < pages)
            {
                for (int i = 0; i < pages; i++)
                {
                    int      position = bundle.GetInt(CreateCacheIndex(i));
                    Fragment f        = _fm.GetFragment(bundle, CreateCacheKey(position));
                    _pages.Put(position, f);
                }
            }

            IParcelable p = (IParcelable)bundle.GetParcelable(_stateSuperState);

            base.RestoreState(p, loader);
        }
        private List <Fragment> GetFragmentsFromBundle(Bundle bundle)
        {
            var fragments = new List <Fragment> ();

            if (bundle == null || _fragmentManager == null || _fragmentManager.Fragments == null)
            {
                return(fragments);
            }

            // This is how the base adapter retrieves its fragments from the bundle.
            // Copy-pasted here because the base adapter's fragment list is private
            var keys = bundle.KeySet();

            foreach (var key in keys)
            {
                if (!key.StartsWith("f"))
                {
                    continue;
                }

                var index = Integer.ParseInt(key.Substring(1));

                if (_fragmentManager.Fragments == null)
                {
                    return(fragments);
                }

                var f = _fragmentManager.GetFragment(bundle, key);
                if (f != null)
                {
                    while (fragments.Count() <= index)
                    {
                        fragments.Add(null);
                    }

                    fragments[index] = f;
                }
            }

            return(fragments);
        }
Beispiel #5
0
        public override void RestoreState(IParcelable state, ClassLoader loader)
        {
            if (state == null)
            {
                return;
            }
            var bundle = (Bundle)state;

            bundle.SetClassLoader(loader);
            var fss = bundle.GetParcelableArray("states");

            if (fss != null)
            {
                for (var i = 0; i < fss.Length; i++)
                {
                    _savedState.Add((Fragment.SavedState)fss[i]);
                }
            }
            var keys = bundle.KeySet();

            foreach (var key in keys)
            {
                if (!key.StartsWith("f"))
                {
                    continue;
                }
                var index = int.Parse(key.Substring(1));
                var f     = (TFragment)_fm.GetFragment(bundle, key);
                if (f == null)
                {
                    Log.Warn(Tag, "Bad fragment at key " + key);
                    continue;
                }
                while (_fragments.Count <= index)
                {
                    _fragments.Add(null);
                }
                f.SetMenuVisibility(false);
                _fragments[index] = f;
            }
        }