我正在使用FragmentActivity和ViewPager来显示几个片段。我希望每次根据传递给FragmentActivity的意图显示不同的片段。但问题是当我在setAdapter()之后使用setCurrentItem()时,第一个Fragment将总是被创造出来,我该如何避免这种情况?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.container_page);
mDemoCollectionPagerAdapter = new FragmentPageAdapter(
getSupportFragmentManager());
mViewPager = (ViewPager)findViewById(R.id.pager);
mViewPager.setAdapter(mDemoCollectionPagerAdapter);
Intent intent = getIntent();
int whichFragment = intent.getIntExtra(Constants.EXTRA_WHICH_FRAGMENT, 0);
mViewPager.setCurrentItem(whichFragment, false);
setActionBarTitle(whichFragment);
mViewPager.setOnPageChangeListener(this);
}
答案 0 :(得分:0)
该应用可能会花一些时间来检索您的额外内容,因此他会膨胀您的第一个片段。
尝试在setAdapter()之前放置它:
Intent intent = getIntent();
int whichFragment = intent.getIntExtra(Constants.EXTRA_WHICH_FRAGMENT, 0);
然后,在setAdapter之后,设置当前项目。
答案 1 :(得分:0)
您可以从适配器中删除前面的片段......然后添加它们..
添加其他片段后别忘了拨打notifyDataSetChanged()
。否则会出现异常
此外,您可能需要在适配器中覆盖此方法getItemPosition()
以返回所有片段的递增位置。