FragmentPagerAdapter不会从getItem返回正确的视图

时间:2015-03-15 13:12:02

标签: java android arrays android-fragments android-viewpager

首先,我有一个片段列表

icons.add(new Home()));
    icons.add(new NewsFragment()));
    for (int i=0; i<gs.pages.size(); i++) { 
        SchoolPg page = gs.pages.get(i);
        if (page.page_parent_id.equals("0")) {
            icons.add(new PageFragment()); 
        }
    }
    icons.add(new InfoFragment());

正如你所看到的,第一个是Home,然后是News Fragment,然后是Page Fragment列表,最后一个是Info Fragment。

问题是,在get Item中,当我更改为视图寻呼机位置1时,它应该是新闻片段,但它会转到页面片段,为什么以及如何修复它?感谢

public class SampleFragmentPagerAdapter extends FragmentPagerAdapter {

        public SampleFragmentPagerAdapter(FragmentManager fm, Context context) {
            super(fm);
        }

        @Override
        public int getCount() {
            return icons.size();
        }

        @Override
        public Fragment getItem(int position) {
            return icons.get(position).frag;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return null;
        }
    }

更新

如果我选择位置2并选择位置1,它可以工作, 但是,如果我选择除选择1之外的其他位置,则会失败

发现它运行了两次

当我点击位置1时, 它首先运行位置1 - 打开NewsFragment 但同时运行位置2 - 打开PageFragment

1 个答案:

答案 0 :(得分:1)

您的Fragment将按照以下方式排列:

位置0: NewsFragment

位置1: PageFragment

即可。  。  。  

职位(n-2): PageFragment

职位(n-1): InfoFragment

其中n = icons.size();

icons这样的数组仍然是从索引0开始排序的,这是C天的遗物。希望你知道!