Beo*_*son 5 android android-fragments
我注意到当使用与FragmentPagerAdapter当前片段不相邻的片段时,它们的视图被破坏(并且它们onPause()和onStop()方法被调用,奇怪的onSaveInstanceState(Bundle)是没有被调用),并且onCreateView正在为这些片段再次调用它们.我的问题是我有一些Timer在这些片段上运行,并且重新创建它们是不可行的,因为这些定时器应该触发并更新相关的片段UI.对于大屏幕,我使用HorizontalScrollViewa LinearLayout和它完美无缺.
我的活动中的相关代码:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
片段是在Activity的onCreate方法上创建的,其他片段可以在运行时添加到列表中,但即使不添加新片段,当我滚动到第一个片段时,第三个片段也会被销毁.
有没有办法避免它们的破坏,或者我是否应该忘记ViewPager并使用HorizontalScrollView小屏幕呢?我选择使用它,因为我认为"固定"行为确实有助于可用性.
Sai*_*mon 18
以下方法应防止碎片破坏:
mViewPager.setOffscreenPageLimit(no_of_fragments_to_be_kept_offscreen);
Run Code Online (Sandbox Code Playgroud)
而不是黑客FragmentPagerAdapter,只需使用ViewPager.
int limit = myPagerAdapter.getCount();
// Set the number of pages that should be retained to either side of the current page in the view hierarchy in an idle state.
viewpager.setOffscreenPageLimit(limit);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5128 次 |
| 最近记录: |