2

私はこのメソッドをActivity持つImagePagerAdapter(の拡張)を持っています:FragmentStatePagerAdaptergetItem

@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初回のロード時に、ピカソが を呼び出しonErrorて、.errordrawable を表示します。戻るボタンを押して がある に戻るとActivityImagePagerピカソは画像を正しく読み込みます。にImagePager2 つ以上の画像があり、画像間をスワイプすると、終了せずに正しく読み込まれ、ImagePager.

理論:

キャッシュの問題ではないかと思いますが、いろいろ検索した結果、問題はピカソの弱い参照にあると思います。この問題は、ImagePager を持つアクティビティを最初にロードしたときにのみ発生することに注意してください。

別の場所では、現在、最初に写真をロードするアダプターでPicasso正常に動作します。クラスのメソッド内でlistView呼び出します。PicassogetViewAdapter

訪問したリンク

前もって感謝します。

4

1 に答える 1

1

この問題は、Picasso 2.3.0 で解決されました。

修正はPicasso changelogにあります。

ネットワーク エラーが原因でリクエストが失敗した場合、リクエストが自動的に再生されるようになりました。

これで何時間も節約できることを願っています。

于 2014-06-12T14:47:18.287 に答える