我试图在Glide s[0]之后返回字符串onResourceReady,但是return语句在onResourceReady方法之前执行,所以现在我想从Glide onResourceReady返回字符串,但是它不起作用。

如何使onResourceReady返回String?

请帮我。

private String storeToLocalDisk(String urlS, final int id) {

    final String[] s = new String[1];

    Glide.with(getContext()).asBitmap().load(urlS).into(new SimpleTarget<Bitmap>() {
        @Override
        public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
            s[0] = saveToInternalStorage(resource,id);
            return s[0]; // not working
        }
    });
   // return s[0];
}

最佳答案

return s[0];不会执行,因为第一个return s[0];将执行,然后您将从Glide获取数据。

我建议像这样使用LiveData

 //Create livedata variable
 MutableLiveData<String> liveData;

 //then initialize this variable in oncreate or where you want just like this
 liveData= new MutableLiveData<>();

 //then set value to LiveData just like this
 liveData.setValue("set you value");

 //then Create observer for livedata. whenever data change in Livedata  onChanged method will call
  Observer<String> observer= new Observer<String>() {
    @Override
    public void onChanged(@Nullable String s) {
       Log.e("dataChange",s);
    }
};


像这样将observer设置为livedata

  liveData.observe(this,observer):


现在终于像这样的setvaluelivedata

liveData.setValue("set you value");


我几乎有同样的问题,这件事对我有用。

08-27 09:39