我使用Android Studio的选项卡式活动启动了一个新项目。它使用ViewPager创建了一个活动,3个片段=片段1,片段2和片段3。 我改变了fragment1有一个listView和一个TextView,我创建片段时初始化。 listView中的数据是从SQL数据库中读取的。 当应用程序启动时,将显示fragment1,listView显示从SQL读取的数据。 当我从片段1滑动到片段2并返回时,片段1正确显示了列表视图。但是,当我滑动到fragment3并返回到fragment1时,listview数据会丢失,并且出现空白屏幕,但textview正确显示。 当我将应用程序更改为只有2个片段时,它不会发生,我可以从fragment1滑动到fragment2并多次回放,而不会丢失任何数据。当我添加第三个片段时,数据在首次滑动到片段3时丢失,但如果仅在片段1和片段2之间滑动,则不会丢失数据。 任何想法为什么会发生?ViewPager中的片段丢失了视图
0
A
回答
0
问题已解决。问题是由于适配器在内存中保留了3个片段,正如@Daniel Nugent所指出的。页面中的数据是从数据库中加载的,因此当重新创建视图时,碎片被销毁并在用户滑动时重新创建时,列表视图适配器已丢失数据,并且必须重新填充数据。这个问题并没有出现在简单的例子中,因为通常所呈现的数据是静态的并且在onCreateView方法中加载。
相关问题
- 1. 如何更改视图ViewPager片段
- 2. 片段与ViewPager PagerAdapter不更新视图
- 3. 来自相机的Android丢失片段视图
- 4. 在寻呼机的子片段中访问ViewPager的父片段视图
- 5. 在viewpager的片段中显示地图
- 6. 从ViewPager中的多个片段实例化访问视图
- 7. Android viewpager片段
- 8. ViewPager片段
- 9. ViewPager中的片段显示
- 10. 片段在ViewPager中的ActionBar
- 11. 片段内的ViewPager
- 12. ViewPager图像中片段标题
- 13. 在viewpager中更改页面后,RecylerView数据丢失了吗?
- 14. 在ViewPager中替换片段
- 15. ViewPager片段内(NestedFragments)
- 16. ViewPager child片段空
- 17. 片段呼吁ViewPager
- 18. ViewPager:刷新用户划动的片段视图
- 19. 如何从其父活动更改viewpager片段的视图
- 20. ViewPager片段保留以前状态的值视图
- 21. FrameLayout上面的viewPager片段中的onTouch事件拦截了bean
- 22. 片段中的ViewPager中的错误
- 23. 从儿童片段更改ViewPager片段
- 24. 的Android ViewPager刷新片段
- 25. 使用带片段的ViewPager
- 26. 如何在viewpager片段中托管viewpager的片段获取活动上下文?
- 27. ViewPager/PageAdapter使用大量视图片段有什么好方法?
- 28. 使用ViewPager保存一个片段与多个视图
- 29. 片段,viewPager,列表视图和适配器不工作
- 30. 如何在ViewPager上手动smoothScrollTo()片段视图
如果没有一个可重复的例子,就不可能确切地说明它发生的原因。两个片段不会发生问题的原因是FragmentPagerAdapter使两个片段都保持活动状态,请参阅此处:http://stackoverflow.com/questions/8348707/prevent-viewpager-from-destroying-off-screen-views和here :http://stackoverflow.com/questions/10853611/viewpager-with-fragments-onpause-onresume –
该项目太大,无法发布。如果我们很快就找不到解决方案,我会创建一个小版本发布。 – Zvi
该项目太大而无法发布。如果我们很快就找不到解决方案,我会创建一个小版本发布。 无论如何,我进一步测试,发现发生的事情是,该列表视图失去了它的适配器(listView.getAdapter()返回null)。所以在页面重新显示之前,我现在测试这个条件,如果存在,我重新创建适配器,并且列表显示正确。 这可以给你一个提示发生什么? – Zvi