Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 碎片页面适配器工作不正常_Android_Android Fragments_Fragmentpageradapter - Fatal编程技术网

Android 碎片页面适配器工作不正常

Android 碎片页面适配器工作不正常,android,android-fragments,fragmentpageradapter,Android,Android Fragments,Fragmentpageradapter,我使用FragmentPagerAdapter在我的应用程序中的4个片段之间导航。但我面临一个奇怪的问题。当我调试我的应用程序时,我发现当MainActivity启动时,getItem中的索引值加载到0,因此第0个索引处的片段被加载,此后索引变为1,第1个索引处的片段被加载,因此获取片段的顺序有点混乱。我不知道我是否错过了什么。但是我真的不能解决这个问题。这是我的FragmentPagerAdapter课程: public class TabsPagerAdapter extends Fragm

我使用FragmentPagerAdapter在我的应用程序中的4个片段之间导航。但我面临一个奇怪的问题。当我调试我的应用程序时,我发现当MainActivity启动时,getItem中的索引值加载到0,因此第0个索引处的片段被加载,此后索引变为1,第1个索引处的片段被加载,因此获取片段的顺序有点混乱。我不知道我是否错过了什么。但是我真的不能解决这个问题。这是我的FragmentPagerAdapter课程:

public class TabsPagerAdapter extends FragmentStatePagerAdapter {
    Context context;

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

    @Override
    public Fragment getItem(int index) {

        switch (index) {
        case 0:
            return new FragmentA();
        case 1:
            return new FragmentB();
        case 2:
            return new FragmentC();
        case 3:
            return new FragmentD();
        }

        return null;
    }

    @Override
    public int getCount() {
        // get item count - equal to number of tabs
        return 4;
    }

}

这门课的表现不是我想要的。用户界面按照我想要的方式加载。我的意思是,假设我点击FragmentB()的标签,将生成下一个片段的索引,即FragmentC(),但在我的设备上,我将看到FragmentB(),我知道我无法正确解释这个问题,但如果有人能帮忙,我将不胜感激,但请不要投反对票。提前感谢:)

我不确定我是否完全理解了,但是
FragmentStatePagerAdapter
从起始位置前后加载片段。此行为由适配器
setOffscreenPageLimit(int number)
控制。Javadoc声明默认偏移量为1,这意味着当单击“Frag B”时,以下调试活动将注意到“Frag C”加载…由于此偏移量(Frag B是在Frag A/Frag C加载时加载的)。

问题是在开始时?老实说,我没有清楚地理解这个问题。将您的代码发布在
onTabSelected
@Override public void onTabSelected(选项卡选项卡,FragmentTransaction ft){viewPager.setCurrentItem(选项卡.getPosition());}上,我不确定我是否完全理解,但
FragmentStatePagerAdapter
加载片段(从…)起始位置向前和向后。此行为由适配器
setOffscreenPageLimit(int number)
控制。Javadoc声明默认偏移量为1,这意味着在调试活动之后单击“Frag B”时,将注意到由于此偏移量而加载的“Frag C”(Frag A/Frag C加载时加载了Frag B)。@OceanLife这就是原因。谢谢:)