2014-02-19 3 views
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 загрузка в первый раз, несколько раз, звонок Пикассо onError, показывающий .error. Если я нажму на кнопку возврата и вернусь к Activity, у которого есть , Picasso загрузит изображение правильно. Если у есть две или более картинки, и я прокручиваю между изображениями, они загружаются правильно несколько раз без выхода и повторно входят в .

Теория:

Я думаю, что это может быть проблемой кэша, но после многих поисков, я уверен, что проблема заключается в слабой компетенции Пикассо. Имейте в виду, что проблема появляется только в ПЕРВОЕ ВРЕМЯ Я загружаю действие, которое имеет ImagePager.

В другом месте, в настоящее время Picasso работает нормально в listView с адаптером, загружающим фотографии в первый раз. Вызов Picasso внутри метода getViewAdapter класс.

Просмотренные ссылки

Заранее спасибо.

+0

Вы подключили слушателя к вашему экземпляру Picasso? Вы можете распечатать stacktrace и посмотреть, что такое ошибка. И какая версия Пикассо? – dnkoutso

ответ

1

Проблема была решена в Picasso 2.3.0.

Исправление в Picasso changelog:

Requests will now be automatically replayed if they failed due to network errors.

Я надеюсь, что это сэкономит вам много часов.

+0

Я попытался обновить до последней версии Picasso 2.3.2 в Android Studio v0.8.2, но не смог синхронизировать проект градиента с надписью «Ошибка: не удалось найти: com.squareup.picasso: picasso: 2.3.2». Как вы это исправите? – toobsco42

+0

@ toobsco42 попробуйте эту строку: 'compile group: 'com.squareup.picasso', имя: 'picasso', версия: '2.3.+ '' – wendigo

+0

Я выяснил, что это была проблема с разрешениями на перемещение или удаление файлов. После исправления разрешений в соответствующих папках и очистки проекта, теперь все работает. – toobsco42

Смежные вопросы