我的应用程序中有以下代码。
根据我的理解,我希望在从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}}
答案 0 :(得分:1)
这是因为ViewPager
不仅加载了可见片段,还加载了左右片段。所以在你的情况下,可见片段是#0,没有左片段,右片段是#1。结果是加载了片段#0和#1。出于性能原因实现此行为,因为这样ViewPager
准备好下一个片段并准备好显示,并且在页面之间滑动时不会出现延迟。