3

My current implementation of FragmentStatePagerAdapter creates new fragments every time it is called by viewpager.

I Want to save states of fragments which are previously loaded and wnat to reuse them.

I think to achieve this I have to implement InstantiateItem but not clear how to?

This is my code for FragmentStatePagerAdapter

   using System.Collections.Generic;

     //using Android.App;
    using Android.Views;
     using Hollard.MLAM.Android.Fragments.Fna;
    using Object = Java.Lang.Object;
    using Android.Support.V4.App;




    public FnaFragmentPagerAdapter(FragmentManager fm)
        : base(fm)
    {
        _registeredFragments = new Dictionary<int, Fragment>();
    }

    public override Fragment GetItem(int position)
    {
        Fragment fragment = null;
        switch ((FnaStep)position)
        {
            case FnaStep.First:
                fragment = new FnaStep1Fragment();
                break;
            case FnaStep.Second:
                fragment = new FnaStep2Fragment();
                break;         
            case FnaStep.Third:
                fragment = new FnaStep3Fragment();
                break;         
            case FnaStep.Fourth:
                fragment = new FnaStep4Fragment();
                break;         
            case FnaStep.Fifth:
                fragment = new FnaStep5Fragment();
                break;
            case FnaStep.Sixth:
                fragment = new FnaStep6Fragment();
                break;
            default:
                break;
        }
        return fragment;
    }

    public override int Count
    {
        get { return PageCount; }
    }



    public Fragment GetRegisteredFragment(ViewGroup container, int position)
    {
        global::Android.Support.V4.App.Fragment fragment = null;
        if (!_registeredFragments.TryGetValue(position, out fragment))
        {
            InstantiateItem(container, position);
            _registeredFragments.TryGetValue(position, out fragment);
        }

        return fragment;
    }

}

public enum FnaStep
{
    First = 0,
    Second,
    Third,
    Fourth,
    Fifth,
    Sixth
}
}

Please help me How to implement FragmentStatePagerAdapter, so it can reuse fragments which are already created.

HemangNirmal
  • 621
  • 1
  • 8
  • 24

1 Answers1

0

You should save instances of your fragments and not instantiate them each time. In other words, instead of this line

  fragment = new FnaStep1Fragment();

you should use

  fragment = _FnaStep1FragmentInstance;

such that _FnaStep1FragmentInstance was initialized in the constructor of the container activity.

WillardSolutions
  • 2,316
  • 4
  • 28
  • 38
Afshin
  • 151
  • 1
  • 3