FragmentStatePagerAdapter的当前实现在每次被viewpager调用时都会创建新的片段。
我想保存以前加载的片段的状态,并重新使用它们。
我认为要实现这一点,我必须实现InstantiateItem,但不清楚如何实现?
这是我的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
}
}
请帮助我如何实现FragmentStatePagerAdapter,这样它就可以重用已经创建的片段。
您应该保存片段的实例,而不是每次都实例化它们。换句话说,代替这条线
fragment = new FnaStep1Fragment();
你应该使用
fragment = _FnaStep1FragmentInstance;
使得CCD_ 1在容器活动的构造函数中被初始化。