我在一个活动中创建了一个Asynctask,现在我想将变量“realimage”返回到Asynctask,但我似乎无法访问它...
public class PhotoUtils
{
public static Photo getImage(String id)
{
unsplash.getPhoto(id, new Unsplash.OnPhotoLoadedListener()
{
@Override
public void onComplete(Photo photo)
{
Photo realImage=photo;
}
@Override
public void onError(String error)
{
}
});
return realImage; //This line shows error that cannot resolve symbol
realImage
}
}
这是我在其他活动中的异步任务
public class ImageTask extends AsyncTask<Photo,Void,Photo>
{
@Override
protected Photo doInBackground(Photo... photos)
{
Intent intent=getIntent();
Bundle bd=intent.getExtras();
String getId = (String) bd.get("id");
Photo finalPhoto=PhotoUtils.getImage(getId);
return finalPhoto;
}
@Override
protected void onPostExecute(Photo finalPhoto) {
tv1.setText(finalPhoto.getId());
super.onPostExecute(finalPhoto);
}
}
答案 0 :(得分:0)
首先,看起来你甚至不需要Asynctask。 Look at the example code
其次,你不能那样回归。
OnPhotoLoadedListener
是异步回调。
只需在onComplete
内正常使用图片。
如果需要将图像传回给调用方法,请将回调提取为参数。
// this is void now
public static void getImage(String id, Unsplash.OnPhotoLoadedListener listener) {
unsplash.getPhoto(id, listener);
});
将其称为
PhotoUtils.getImage(id, new Unsplash.OnPhotoLoadedListener() {
// Use image in here
});
其中,如果仔细观察,您所做的只是将unsplash.getPhoto
的正常用法替换为PhotoUtils.getImage
,这可能是您想要的,但您可以使用单一模式完成类似的方法。 unsplash
实例变量。这样,您就不会重写所有Unsplash API调用