我注意到娛樂,使用一個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