2014-12-10 63 views
6

我有一个由碎片组成的ViewPager(由AbstractBrowsePagerAdapter支持)。每个片段都以SwipeRefreshLayout作为根扩展布局。我最近更新到support-v4:21.0.0库。新的SwipeRefreshLayout使用圆形进度条代替线性垂直进度条,如下面的屏幕截图所示。SwipeRefreshLayout的新版本会导致错误的绘制视图

当我拉动刷新时,向右滑动,在ViewPager中创建一个与我拉动刷新的片段相同索引的新片段,然后转到新的片段,上一个视图仍然出现在我的新片段之上内容。

Bug with new SwipeRefreshLayout

正如你可以在截图中看到,“空目录”的TextView和“圆进度”仍然从被摧毁之前的片段出现。

  1. 这只有在SwipeRefreshLayout处于装载状态(加载器在屏幕上显示)
  2. 这并不与前一版本的SwipeRefreshLayout
  3. 的hierarchyviewer工具不会发生发生在发生错误时工作。它工作之前,它工作,如果我重新启动应用程序,但在处于窃听状态时不起作用。
  4. 当我使用DDMS转储视图时,不会显示前一个片段的视图。

这似乎是在新SwipeRefreshLayout一个错误,但有同样的问题我无法找到任何人,它似乎并没有要在https://code.google.com/p/android/issues/list?can=1&q=SwipeRefreshLayout&colspec=ID+Type+Status+Owner+Summary+Stars&cells=tiles

报道我在寻找一个解决办法,迫使从前面的片段的意见被删除的好。

+1

swipeRefreshLayout.setRefreshing(假)来解决这个问题; – 2015-01-28 11:30:31

+0

没有。正确答案如下。 – Quanturium 2015-02-05 00:24:24

回答

8

我能够通过调用的onPause clearAnimation()()我的片段的方法

@Override 
public void onPause() { 
    swipeLayout.clearAnimation(); 
    super.onPause(); 
} 
+0

当你更换碎片时,它很好用。但是在ViewPager的情况下,片段上的onPause()方法不会被调用。 – Quanturium 2015-01-28 19:03:05

+0

我有一个类似的问题 - http://stackoverflow.com/questions/30821940/replacing-fragments-quickly-causes-a-weird-screenshot-of-the-previous-fragment-t。在片段的onDestroyView中删除片段视图的所有子视图也似乎“修复”它,但我不知道为什么 – Rickster 2015-06-15 20:17:48

相关问题