我试图在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):
现在终于像这样的
setvalue
的livedata
liveData.setValue("set you value");
我几乎有同样的问题,这件事对我有用。