FragmentStatePagerAdapter 爬坑

网上看了好多刷新的案例,按照他们的想法逐个去试,没有任何一个可以满足要求。我的是viewpager 里面去加载Fragment,
public class PhotoFragment extends Fragment {
    private static final String PHOTO_PATH = "photoPath";
    private CacheUtils mPreviewCache;
    private String photoPath;
    private RequestOptions mOptions;
    private OnPhotoTapListener mOnPhotoTapListener;
    private PhotoView mPhotoView;

    public static PhotoFragment getInstance(@NonNull String photoPath) {
        PhotoFragment photoFragment = new PhotoFragment();
        Bundle bundle = new Bundle();
        bundle.putString(PHOTO_PATH, photoPath);
        photoFragment.setArguments(bundle);
        return photoFragment;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        photoPath = getArguments().getString(PHOTO_PATH);
        LogUtils.file(photoPath + "");
        mPreviewCache = CacheUtils.getInstance(new File(SDCardUtils.getAppCachePath() + File.separator + "CACHE_PREVIEW_IMG"));
        initGlidOptions();
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        LogUtils.file("PhotoFragment,onCreateView");
        mPhotoView = new PhotoView(container.getContext());
        Glide.with(container.getContext()).load(photoPath).apply(mOptions).into(mPhotoView);
        return mPhotoView;
    }

    private void initGlidOptions() {
        mOptions = new RequestOptions()
                .skipMemoryCache(true)
                .centerCrop()
                .placeholder(R.drawable.pic_place_holder)
                .error(R.drawable.pic_place_holder)
                .diskCacheStrategy(DiskCacheStrategy.NONE);
    }


按照网上的做法 直接重写:

  @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }
然后运行,打印日志,也销毁了当前页面 也重新执行了 oncreateView,但是页面上仍然是没有图片。(可能我的比较复杂,先要从一个usb 链接的盒子里面把预览图取出来放到sd卡里面,取完之后刷新界面),以为是Glide 缓存的原因 就清空了缓存,然而还是无效,突然想到会不会是下载好了图片但是sd卡没刷新的问题?于是在刷新之前加了以下代码:
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
   intent.setData(Uri.fromFile(new File(photoPath)));   
   this.sendBroadcast(intent); 

但是加载的还是空的,比较郁闷,于是去看刷新的时机,发现存到sd 的时候是异步的,也就是说在开始保存的时候就已经去刷新了,这个时候图片还没保存完成,于是将调用时机改成保存完之后再去刷新,还是不行,那么再加上刷新sd卡的代码,竟然就行了。



猜你喜欢

转载自blog.csdn.net/yyo201/article/details/80525967
今日推荐