我注意到娱乐,使用一个FragmentPagerAdapter
是不相邻于当前一个都具有自己的看法破坏(并且调用其onPause()
和onStop()
方法,奇怪onSaveInstanceState(Bundle)
没有被碎片时称为),并且onCreateView
正被再次调用这些碎片。我的问题是我在这些碎片上运行了一些Timer
,重新创建它们是不可行的,因为这些定时器应该触发并更新相关的碎片UI。对于大屏幕,我使用HorizontalScrollView
和LinearLayout
,它的工作完美无瑕。FragmentPagerAdapter - 避免的片段的观点
在我的活动相关的代码:
private class MyPagerAdapter extends FragmentPagerAdapter implements TitleProvider {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (position == 0) {
return mAddNewScenesFragment;
} else if (position == 1) {
return mGlobalEventsFragment;
} else {
return mSceneFragments.get(position - 2);
}
}
@Override
public int getCount() {
return mSceneFragments.size() + 2;
}
@Override
public String getTitle(int position) {
if (position == 0) {
return "New scene";
} else if (position == 1) {
return mGlobalEventsFragment.getTitle();
} else {
return mSceneFragments.get(position - 2).getTitle();
}
}
}
的片段上的活动的onCreate
方法创建和其他人可以被添加到列表中运行,但即使没有添加新的,第三个片段被销毁当我滚动到第一个。
有没有办法避免它们的破坏,或者我应该忘记ViewPager
并在小屏幕上使用HorizontalScrollView
?我选择使用它,因为我认为“固定”行为确实有助于可用性。
它不是mFragmentPagerAdapter.setOffscreenPageLimit()。它是mViewPager.setOffscreenPageLimit(numberOfFragments)。我很惊讶这么多错误。 –
你是对的@raychenon。我已经更新了我的答案。 – Saimon
是的,这解决了我的问题..谢谢@Saimon – bebosh