Java方法返回null,尽管它不是null
我有一个名为webservice的类,它派生了一个变量内容和一个名为getURL的方法,该方法获取URL作为参数,获取数据并将其作为字符串返回。详情如下:Java方法返回null,尽管它不是null,java,android,methods,null,Java,Android,Methods,Null,我有一个名为webservice的类,它派生了一个变量内容和一个名为getURL的方法,该方法获取URL作为参数,获取数据并将其作为字符串返回。详情如下: class WebService { String content; String getUrl(String url, final Context mContext) { AsyncHttpClient client = new AsyncHttpClient(); client.get(ur
class WebService {
String content;
String getUrl(String url, final Context mContext) {
AsyncHttpClient client = new AsyncHttpClient();
client.get(url, new TextHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
Toast.makeText(mContext, "Sorry, Something Went Wrong While Connecting To Net :(", Toast.LENGTH_SHORT).show();
}
@Override
public void onSuccess(int statusCode, Header[] headers, String responseString) {
content = responseString;
Log.i("RESPONSE STRING", responseString);
Log.i("COntent STRING", content);
}
});
Log.i("BEFORE RETURN",""+ content);
return content;
}
}
问题是方法返回null。
在onSuccess中,我检查“content”,其值与responseString完全相同,但在返回之前它在日志中变为null。
你能告诉我为什么会这样吗?
谢谢。一个
异步任务,顾名思义,将是异步的
。这意味着它将在完成时完成。其他的一切都会照常进行,不要在意那项任务——除非你想从中得到什么
您可以通过web上的各种库实现这一点,也可以通过回调自己实现这一点
e、 g
class WebService {
public void getUrl(String url, final Context mContext, WebServiceCallback cb) {
AsyncHttpClient client = new AsyncHttpClient();
client.get(url, new TextHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
cb.onFailure();
}
@Override
public void onSuccess(int statusCode, Header[] headers, String responseString) {
cb.onSuccess(responseString);
}
});
}
public interface WebServiceCallback{
void onFailure();
void onSuccess(String url);
}
}
你这样叫它
WebService service = new WebService();
service.getUrl("www.test.com", yourContext, new WebServiceCallback(){
@Override
public void onFailure(){}
@Override
public void onSuccess(String url){
yourAlreadyDeclaredString = url;
// do smth with it
}
});
您也可以跳过此自定义回调并传递文本HttpResponseHandler
,但这取决于您的设计。因为您假设在返回内容之前调用onSuccess
你应该用谷歌搜索“async”的意思。@Blackbelt那么这不是真的吗?如果是的话,它应该是sync
而不是async
@Codebender只要你在内部类和方法中声明它们,你就需要完成它们。已经在课堂上宣布了。谢谢你的解释。所以在异步方法中我不应该使用return,因为它通常在onSuccess或onFailure之前调用return语句。是这样吗?@PouyaHeydari是的。