Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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 片段页面适配器-仅调用一次Get项_Android_Android Fragments - Fatal编程技术网

Android 片段页面适配器-仅调用一次Get项

Android 片段页面适配器-仅调用一次Get项,android,android-fragments,Android,Android Fragments,我在我的应用程序中设置了选项卡。我使用的是列表视图片段,每个片段都执行一个调用来下拉数据 如下所示: public Fragment getItem(int position) { switch (position) { case 0: return FirstFragment.newInstance(); case 1: return FirstFr

我在我的应用程序中设置了选项卡。我使用的是列表视图片段,每个片段都执行一个调用来下拉数据

如下所示:

   public Fragment getItem(int position) {
            switch (position) {
            case 0: 
                return FirstFragment.newInstance();
            case 1: 
                return FirstFragment.newInstance();
            case 2: 
                return SecondFragment.newInstance();
            default:
                return null;
            }
        }
它工作得很好,但是我不希望每次访问该选项卡时都会打电话,只是第一次


正确的方法是什么?

您可以始终在构造函数中的某个位置实例化这些片段,然后在
getView(…)
中传递对它的引用

下面是一个例子:

public class YourPagerAdapter extends FragmentPagerAdapter {

    YourFragment fragment1, fragment2, fragment3;

    public YourPagerAdapter() {
        fragment1 = YourFragment.newInstance();
        fragment2 = YourFragment.newInstance();
        fragment3 = YourFragment.newInstance();
        ...
    }

    public Fragment getItem(int position) {
        switch (position) {
        case 0: 
            return fragment1;
        case 1: 
            return fragment2;
        case 2: 
            return fragment3;
        default:
            return null;
        }
    }

    ...

}
这样,当您创建适配器时,您的片段将只实例化一次


更好的是,将这些片段包装在
列表中。这样你就可以简化你的
getItem(int-position)
,只返回mFragments.get(position)

你使用的是ViewPager吗?是的,它在my activity_main.xml中默认情况下,屏幕外始终保留一个片段。您可以使用setOffscreenPagliemit更改此值,所以我只想将该数字更改为我拥有的选项卡总数?viewPager.setOffscreenPageLimit(3);如果您只想为每个片段调用一次,可以