簡體   English   中英

FragmentStatePagerAdapter不會在選項卡重新選擇上調用getItem

[英]FragmentStatePagerAdapter doesn't call getItem on tab reselection

我有一個像這樣的復雜UI設置:

主片段->具有ActionBar.TabListener的片段->具有FragmentStatePagerAdapter的片段-> ListFragment

當應用程序加載並且我第一次使用FragmentStatePagerAdapter進入Fragment時,此方法有效,但是當我再次使用FragmentStatePagerAdapter和ListFragment進入Fragment時,我遇到了問題(因此轉到另一個選項卡,然后使用FragmentStatePagerAdapter)。 當我第二次選擇FragmentStatePagerAdapter的選項卡時,不會調用getItem方法。

我嘗試用相同的結果擴展FragmentStatePagerAdapter和FragmentPagerAdapter。 我寧願使用FragmentPagerAdapter來解決可用性問題,因為我只有3個要分頁的片段。

這是我的一些代碼。 如果需要其他代碼,請告訴我:

public class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter
{       
    TrendsLV[] arrayOfTrendsFragments;

    public ScreenSlidePagerAdapter(FragmentManager fragmentManager)
    {

        super(fragmentManager);

        arrayOfTrendsFragments = new TrendsLV[NUM_PAGES];
        arrayOfTrendsFragments[0] = new TrendsLV(arrayOfMonths, 0);
        arrayOfTrendsFragments[1] = new TrendsLV(arrayOfMonths, 1);
        arrayOfTrendsFragments[2] = new TrendsLV(arrayOfMonths, 2);
    }

    @Override
    public Fragment getItem(int position) 
    {                       
        return arrayOfTrendsFragments[position];
    }

    @Override
    public int getCount() 
    {
        return NUM_PAGES;
    }   
}

上面的代碼如何被調用:

public class TrendsPagerHolder extends Fragment implements ResultsListener
{
private void displayData()
{
    if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
    {   
        if (pagerAdapter == null)
            pagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager());

        pager.setAdapter(pagerAdapter);
        pager.setCurrentItem(0);
    }
}
}

我也希望這不是重復的。 我發現了FragmentStatePagerAdapter的其他問題,但沒有解決我的特定問題的方法。

謝謝。

我非常確定在getItemPosition(Object object)中返回POSITION_NONE將解決您的問題:

public int getItemPosition(Object object){
    return POSITION_NONE;
}

更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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