Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 新版本的SwipeRefreshLayout导致错误的视图绘制_Android_Swiperefreshlayout - Fatal编程技术网

Android 新版本的SwipeRefreshLayout导致错误的视图绘制

Android 新版本的SwipeRefreshLayout导致错误的视图绘制,android,swiperefreshlayout,Android,Swiperefreshlayout,我有一个由片段组成的ViewPager(由AbstractBrowsePagerAdapter支持)。每个片段都以SwipeRefreshLayout作为根来膨胀布局。我最近更新了support-v4:21.0.0库。新的SwipeRefreshLayout使用圆形进度条而不是线性垂直进度条,如下面的屏幕截图所示 当我拉取刷新时,向右滑动,在ViewPager中创建一个与我拉取刷新的索引相同的新片段,然后转到该新片段,以前的视图仍然显示在我的新内容的顶部 正如您在屏幕截图上看到的,“空目录”文

我有一个由片段组成的ViewPager(由AbstractBrowsePagerAdapter支持)。每个片段都以SwipeRefreshLayout作为根来膨胀布局。我最近更新了support-v4:21.0.0库。新的SwipeRefreshLayout使用圆形进度条而不是线性垂直进度条,如下面的屏幕截图所示

当我拉取刷新时,向右滑动,在ViewPager中创建一个与我拉取刷新的索引相同的新片段,然后转到该新片段,以前的视图仍然显示在我的新内容的顶部

正如您在屏幕截图上看到的,“空目录”文本视图和“循环进度条”仍然出现在先前被销毁的片段中

  • 这仅在SwipeRefreshLayout处于加载状态时发生(加载程序显示在屏幕上)
  • 以前版本的SwipeRefreshLayout不会出现这种情况
  • 当错误发生时,hierarchyviewer工具不起作用。它以前可以工作,如果我重新启动应用程序,它也可以工作,但在bug状态下不工作
  • 当我使用DDMS转储视图时,前面片段中的视图不会出现
  • 这看起来像是新布局中的一个bug,但我找不到任何人有相同的问题,而且似乎没有报告


    我正在寻找一种解决方法,强制将前一个片段中的视图永久删除。

    我能够通过调用片段的onPause()方法上的clearAnimation()来解决这个问题

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

    swipeRefreshLayout.setRefreshing(false);不。正确答案如下。当你更换碎片时,它非常有效。但是在ViewPager的情况下,片段上的onPause()方法没有被调用。在片段的onDestroyView中删除片段视图的所有子视图似乎也“修复”了它,尽管我不知道为什么