2

我有一个Activity带有ImagePagerAdapter(扩展FragmentStatePagerAdapter)的具有此getItem方法的:

@Override
        public Fragment getItem(int position) {
            Log.d(LOGTAG, "------------>mUserPicturesList.get("+position+").getFilename(): " + mUserPicturesList.get(position).getFilename());
            return UserDetailFragment.newInstance(mUserPicturesList.get(position).getFilename());
        }

实例化的片段有这个 onCreateView:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate and locate the main ImageView
    final View v = inflater.inflate(R.layout.image_detail_fragment, container, false);
    mImageView = (ImageView) v.findViewById(R.id.imageView);
    mProgressPicturePager = (ProgressBar) v.findViewById(R.id.progress_picture_pager);

    String imageUrl = WApp.PHOTO_URL + mImageUrl + "?type=user_gallery_big_img";

    Picasso picasso = Picasso.with(getActivity());
    picasso.setDebugging(true);
    picasso.load(imageUrl)
            .placeholder(R.drawable.no_picture_man_big)
            .error(android.R.drawable.stat_notify_error)
            .into(mImageView, new Callback() {
                @Override
                public void onSuccess() {
                    mProgressPicturePager.setVisibility(View.GONE);
                }

                @Override
                public void onError() {
                    Log.d(LOGTAG, "picasso load error");
                    mProgressPicturePager.setVisibility(View.GONE);
                }
            });

    return v;
}

问题:

ImagePager一次加载时,有时,Picasso 调用onError,显示.error可绘制对象。如果我按下后退按钮并返回Activity有 的那个ImagePager,毕加索会正确加载图片。如果ImagePager有两张或更多图片并且我在图片之间滑动,则这些图片会正确加载几次而无需退出并重新进入ImagePager.

理论:

我认为这可能是缓存的问题,但经过多次搜索,我敢打赌,问题出在毕加索的弱引用上。请记住,问题仅在我第一次加载具有 ImagePager 的活动时出现。

在另一个地方,目前在第一次加载图片的适配器Picasso中工作正常。在类的方法内部listView调用。PicassogetViewAdapter

访问过的链接

提前致谢。

4

1 回答 1

1

Picasso 2.3.0 解决了这个问题。

该修复程序位于毕加索更改日志中:

如果由于网络错误而失败,请求现在将自动重播。

我希望这可以为您节省很多时间。

于 2014-06-12T14:47:18.287 回答