ViewPager中有超过两个Fragment后,切换时Fragment会重走onCreateView导致页面重新加载

    xiaoxiao2022-07-14  175

    当ViewPager中添加三个以上的Fragment相互切换时,不是相邻的Fragment会重走onCreateView,这样页面会重新加载。

    ViewPager默认是会保留当前页的前一页和后一页,也就是到了第三页的时候,第一页已经被销毁了,回到第二页的时候会重新创建

    ViewPager中的setOffscreenPageLimit(int limit)方法就是用来设置保留当前页前多少页和后多少页,默认值是1,所以超过三页的时候会出现间隔的页面会出现加载。


    如果确认ViewPager只有3到4页,可以设置这个值为2。

    也可以在Fragment的onCreateView中判断当前Fragment是否已经加载过视图了,如果已经加载就不再重新加载。

    private View view; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { if (view == null) { view = inflater.inflate(R.layout.fragment_layout, null); //初始化 init(); } return view; }

     

    最新回复(0)