[英]How to Prevent Android FragmentStatePagerAdapter from Creating Neighboring Fragments
[英]Prevent FragmentStatePagerAdapter from creating new fragments when viewpager is swiped next or previous
我的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;
這樣_FnaStep1FragmentInstance
在容器活動的構造函數中已初始化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.