private class exampleTask extends AsyncTask<String, Void, SomeResult>{
@Override
protected SomeResult doInBackground(String... urls) {
SomeResult res ;
someMethod(new CallBack<T>(){
@Override
public void onResponse(SomeResult something) {
res = something ;
}
@Override
public void onFailure() {
//
}
});
return res ;
}
@Override
protected void onPostExecute() {
//
}
}
請將「res」賦值給「something」,witch位於onResponse方法的回調中。在這段代碼中,不可能在onResponse方法中分配res。將外部變量賦值給AsynckTask中的回調結果
請任何幫助,歡迎。
謝謝:)
我原來的代碼:我想指定 「URL」;
private class GetBeaconInfosTask extends AsyncTask<String, Void, Call<Url>> {
Url url ;
@Override
protected Call<Url> doInBackground(String... urls) {
ProxService service = ProxService.Factory.makeProxService(ProxService.ENDPOINT);
return service.getUrlDetails(urls[0]);
}
// onPostExecute return the results of the AsyncTask.
@Override
protected void onPostExecute(Call<Url> call) {
call.enqueue(new Callback<Url>() {
@Override
public void onResponse(Call<Url> call, Response<Url> response) {
url = response.body();
}
@Override
public void onFailure(Call<Url> call, Throwable t) {
//
}
});
if(url == null){
Log.i("url is null", "url is null !!!!! ....");
}
else {
setShopLogo(url.icon) ;
setShopName(url.title);
setDescription(url.description);
setlongUrl(url.longUrl); }
}
}
爲什麼這是不可能的?因爲它不是最終的?您可以使用SomeResult的最終數組作弊並將數值分配到數組的第一行。 Android Studio應該爲您提供此解決方案。 –
你如何才能返回res'onResponse'你不需要存儲它。 –