我正在尝试在Glide s[0]
之后返回字符串onResourceReady
,但是return语句在onResourceReady
方法之前执行,所以现在我想从Glide onResourceReady
返回一个字符串,但它不起作用。
如何使onResourceReady
返回字符串?
请帮助我。
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):
现在像这样现在最后setvalue
的livedata
liveData.setValue("set you value");
我几乎有同样的问题,这件事对我有用。