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();
    }

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值