梁超杰

不积跬步无以至千里

Fragment界面莫名其妙自动刷新

最近项目中遇到了一个奇怪的问题:

假设我打开一个鞋子列表页面,我不断往下滑动查看喜欢的鞋子(比如是第20双鞋子,),当我点进去跳转新页面在查看完该鞋子详情之后再关闭就会发现我又回到了第1双鞋子的位置而不是第20双鞋子的位置。

我的项目采用的是ViewPager+Fragment,其他的页面都没有出问题,单单就是这个页面出问题,所以我就研究了这个页面的代码和其他页面代码的不同之处,惊讶发现:

@Override
    public void onResume() {
        super.onResume();
        adapter.notifyDataSetChanged();//罪魁祸首就是他
    }

这段代码的意思是每次与此页面需要交互的时候都要刷新数据,当时理解的不深刻

  /**
     * This method should be called by the application if the data backing this adapter has changed
     * and associated views should update.
     */
    public void notifyDataSetChanged() {
        synchronized (this) {
            if (mViewPagerObserver != null) {
                mViewPagerObserver.onChanged();
            }
        }
        mObservable.notifyChanged();
    }

通过源码我们可以看到关联的视图和数据都会被刷新,这样就解释了为什么关闭子页面的时候不能恢复到之前页面的状态了。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LosingCarryJie/article/details/77971359
个人分类: Errors
上一篇PhpStorm+XMAPP创建我的第一个PHP程序
下一篇小白聊算法(一)之冒泡排序演示图
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭