簡體   English   中英

防止在下一或上一個Viewpager滑動時FragmentStatePagerAdapter創建新的片段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM