我FragmentPagerAdapter
用来ListFragment
在OnCreate()
我的主要Application类中显示。简单地:
viewPager = (ViewPager) findViewById(R.id.viewpager);
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new TripListFragment(), "Reissulista");
viewPager.setAdapter(adapter);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
ViewPagerAdapter
有点扩展FragmentPagerAdapter
,TripListFragment
是一个ListFragment
。
这可以正常工作,但是如果应用程序长时间背在后面而被破坏,则该应用程序在重新打开时崩溃。该ListFragment
访问直接从主Activity中访问一些数据,并且该数据尚未加载。但是,在将片段添加到中的适配器之前,已加载数据OnCreate
。
我已经发现问题是我super.OnCreate()
试图在其余部分OnCreate
完成之前从内存中重建片段。
问题是,如何防止OnCreate
超级方法重新创建我的东西,而让我以正确的方式来做。那我应该吗?ListFragment
保留所需的数据是否更合适。但是,如果这样做,创建新片段时,是否不会在内存中的某个地方出现重复的片段?
我所做的是更改了ViewPagerAdapter实现,这样就不会在每个oncreate上重新制作这些片段。以前我有一个基于列表的实现,现在我依赖于更常见的实现,其中片段是在getItem()上制作的(如果尚不存在)。
只需在数据创建后移动super.oncreate()即可解决片段的数据之前重新创建片段的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句