简体   繁体   English

FragmentStatePagerAdapter在getItem中返回错误位置

[英]FragmentStatePagerAdapter returns wrong positions in getItem

I'm using a FragmentStatePagerAdapter . 我正在使用FragmentStatePagerAdapter The getItem(int position) returns wrong positions. getItem(int position)返回错误的位置。 I have 5 fragments. 我有5个片段。 This is the position when I change the fragments: 这是我更改片段时的位置:

Fragment0 -> Fragment1: position = 2
Fragment1 -> Fragment2: position = 3
Fragment2 -> Fragment3: position = 4
Fragment3 -> Fragment4: getItem is not called!
Fragment4 -> Fragment3: position = 2
Fragment3 -> Fragment2: position = 1
Fragment2 -> Fragment1: position = 0
Fragment1 -> Fragment0: getItem is not called!

Here is the code for my Adapter: 这是我的适配器的代码:

import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;

public class AppFragmentPageAdapter extends FragmentStatePagerAdapter {
    final int PAGE_COUNT = 5;
    private String tabTitles[] = new String[] { "اخبار", "حقیقت‌سنج", "ویدیوها", "زندگی‌نامه", "برنامه‌ها" };
    private Context context;

    public AppFragmentPageAdapter(FragmentManager fm, Context context) {
        super(fm);
        this.context = context;
    }

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

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case (0):
                return NewsFragment.newInstance(position);
            default:
                return VideosFragment.newInstance(position);
        }
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return tabTitles[position];
    }
}

It is normal behavior. 这是正常现象。 By default FragmentStatePagerAdapter keep link for current displayed fragment and his neighbors. 默认情况下,FragmentStatePagerAdapter保留当前显示的片段及其邻居的链接。 At first adapter create Fragment0 and Fragment1. 在第一个适配器上,创建Fragment0和Fragment1。 When you swipe to Fragment1, he will create Fragment2 and call getItem(2) for this. 当您滑动到Fragment1时,他将创建Fragment2并为此调用getItem(2)。 After swipe to Fragment2, adapter will destroy Fragment0 and create Fragment3. 滑动到Fragment2之后,适配器将销毁Fragment0并创建Fragment3。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM