R小菜鸟R 2013-04-09 06:11 采纳率: 0%
浏览 1887

ViewPager显示不出页面,外加Layout位置混乱

界面出现混乱,请知道的朋友帮忙看看。
1)activityGroup启动activityA,在A中有list等控件,
2)由A启动activityB,B中有ViewPager等控件。
在B中连续操作偶尔发生ViewPager显示不当的问题(具体操作基本上就是新创建一个VIew。里面都是TextView,然后保存在一个List中用来给ViewPager显示,新View不断的被创建,然后ViewPager一直翻页),最后ViewPager加载的页面白了,什么都显示不出来,退回到A,发现A中List的Layout同样混乱了。
3)按Home键切换出去,再切回来,一切都好了。

想问问有经验的朋友?具体这是怎么回事?是否需要在显示Layout的时候自己去排列位置之类的呢?

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-20 19:22
    关注

    ChatGPT尝试为您解答,仅供参考
    这个问题可能是由于 ViewPager 中加载的视图过多导致的。ViewPager 通常是通过继承 PagerAdapter 并覆盖其中的方法来提供视图的。当 ViewPager 中的视图较多时,PagerAdapter 会缓存这些视图,这样就不需要每次都重新创建视图。但是,如果缓存的视图过多,就可能导致内存问题,从而导致 ViewPager 显示不正常。


    要解决这个问题,可以考虑使用 FragmentPagerAdapter 或 FragmentStatePagerAdapter 替代 PagerAdapter。这两种适配器都是用来在 ViewPager 中显示 Fragment 的,而且它们都会缓存 Fragment。但是,FragmentPagerAdapter 会缓存所有已经加载过的 Fragment,而 FragmentStatePagerAdapter 只会缓存当前可见的 Fragment 及其相邻的 Fragment。这样,就可以减少内存的使用,避免出现内存问题。


    如果您使用的是 PagerAdapter,并且您的 ViewPager 中加载的视图较多,建议您尝试使用 FragmentPagerAdapter 或 FragmentStatePagerAdapter。


    此外,如果您发现 A 中的 List 的布局也混乱了,这可能是由于 A 中的 List 在加载视图时也出现了内存问题,导致布局混乱。您可以尝试使用 RecyclerView 来替代 ListView,以减少内存的使用。


    另外,如果在 B 中连续操作时发生了 ViewPager 显示不正常的问题,您可以尝试在 B 中的 ViewPager 上调用 setOffscreenPageLimit() 方法来设置预加载的页面数量。这样,ViewPager 就会在当前页面之前和之后预加载一定数量的页面,从而可以减少在滑动时重新加载页面的次数,避免出现内存问题。


    此外,您还可以尝试在 B 中的 ViewPager 上调用 setSaveFromParentEnabled(false) 方法,以防止 ViewPager 在重新创建视图时保存其状态。


    最后,如果 B 中的 ViewPager 显示不正常,您还可以尝试在 B 中的 onDestroy() 方法中调用 ViewPager 的 removeAllViews() 方法,以清除 ViewPager 中的所有视图,然后再退出 B。这样,就可以避免内存问题导致的布局混乱问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 鸿业暖通修改详细负荷时闪退
  • ¥15 有偿求码,CNN+LSTM实现单通道脑电信号EEG的睡眠分期评估
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体