FragmentPagerAdapter中的getItem无法按预期工作

时间:2015-02-08 18:42:20

标签: android

我的应用程序中有以下代码。

根据我的理解,我希望在从Tab适配器加载主要活动后getItem应该使用index: 1进行调用,因为它被设置为tab-1 .setTabListener(this), 1,true);

但不是getItem首先使用index: 0然后index: 1调用两次//Main activity code: @Override protected void onCreate(final Bundle savedInstanceState) { … // Tabs Initilization viewPager = (ViewPager) findViewById(R.id.TabHandler); actionBar = getActionBar(); mAdapter = new TabsAdapter(getSupportFragmentManager()); actionBar.addTab(actionBar.newTab().setText(tabs[0]) .setTabListener(this), 0, false); actionBar.addTab(actionBar.newTab().setText(tabs[1]) .setTabListener(this), 1,true); actionBar.addTab(actionBar.newTab().setText(tabs[2]) .setTabListener(this), 2, false); } //And this inside the `Tab Adapter` public class TabsAdapter extends FragmentPagerAdapter { public TabsAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int index) { switch (index) { case 0: return new ZeroViewFragment(); case 1: return new OneViewFragment(); case 2: return new TwoViewFragment(); } return null; } @Override public int getCount() { return 3; } } 。为什么有人可以解释一下?

{{1}}

1 个答案:

答案 0 :(得分:1)

这是因为ViewPager不仅加载了可见片段,还加载了左右片段。所以在你的情况下,可见片段是#0,没有左片段,右片段是#1。结果是加载了片段#0和#1。出于性能原因实现此行为,因为这样ViewPager准备好下一个片段并准备好显示,并且在页面之间滑动时不会出现延迟。