现象
最近公司项目中使用最常见的模式ViewPager中嵌套Fragment,之前在写框架的时候,发现ViewPager中的嵌套三个Fragment布局是一样的,只是数据源不一样,所以复用了Fragment。但是,今天在调试的时候的发现Volley请求数据的时候,第一个Fragment加载数据的时候出现问题了。
问题原因
Volley请求数据的时候,每次请求的时候会加Tag标记,发起请求的时候会根据Tag来取消请求队列中的请求。ViewPager中使用PagerAdapter的时候,加载的时候会预加载相邻Fragment,所以每次都有两次请求发起。因为框架中Tag没有改变,导致第二次求请求将会取消前一次请求,导致前一个界面数据加载异常。
解决问题
问题的原因找到了,解决办法就是在创建Fragment的时候,通过setArguments传入参数,然后对应Tag或者对应请求的操作以及数据相关的操作。