gpt4 book ai didi

android - FragmentPagerAdapter - 避免重新创建 fragment 的 View

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:49:24 25 4
gpt4 key购买 nike

我注意到,当使用 FragmentPagerAdapter 时,与当前 fragment 不相邻的 fragment 的 View 被破坏(以及它们的 onPause() onStop() 方法被调用,奇怪的是 onSaveInstanceState(Bundle) 没有被调用),并且 onCreateView 被再次调用这些 fragment 。我的问题是我有一些 Timer 在这些 Fragment 上运行,重新创建它们是不可行的,因为这些计时器应该触发并更新相关的 Fragment UI。对于大屏幕,我使用了带有 LinearLayoutHorizo​​ntalScrollView,它可以完美地工作。

我的Activity中的相关代码:

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();
}
}
}

fragment 是在 Activity 的 onCreate 方法上创建的,其他 fragment 可以在运行时添加到列表中,但即使不添加新 fragment ,当我滚动到第一个 fragment 时,第三个 fragment 也会被销毁。

有没有办法避免它们被破坏,或者我应该忘记 ViewPager 而对小屏幕也使用 Horizo​​ntalScrollView?我选择使用它是因为我认为“固定”行为确实有助于提高可用性。

最佳答案

下面的方法可以防止 fragment 被破坏:

mViewPager.setOffscreenPageLimit(no_of_fragments_to_be_kept_offscreen);

关于android - FragmentPagerAdapter - 避免重新创建 fragment 的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8284732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com