我正在http://www.raywenderlich.com/78578/android-tutorial-for-beginners-part-3
学习休息服务遇到
AsyncHttpClient client = new AsyncHttpClient();
client.get(QUERY_URL + urlString,
new JsonHttpResponseHandler() {
@Override
public void onSuccess(JSONObject jsonObject) {
// Display a "Toast" message
// to announce your success
Toast.makeText(getApplicationContext(), "Success!", Toast.LENGTH_LONG).show();
// 8. For now, just log results
Log.d("omg android", jsonObject.toString());
}
@Override
public void onFailure(int statusCode, Throwable throwable, JSONObject error) {
// Display a "Toast" message
// to announce the failure
Toast.makeText(getApplicationContext(), "Error: " + statusCode + " " + throwable.getMessage(), Toast.LENGTH_LONG).show();
// Log error message
// to help solve any problems
Log.e("omg android", statusCode + " " + throwable.getMessage());
}
});
我的gradle sync任务成功。但我无法弄清楚为什么onSuccess方法被启发为(Method不会覆盖超类)
即使我已将onSuccess()参数更改为
public void onSuccess(int statusCode, org.apache.http.Header[] headers, JSONObject jsonObject)
我也遵循以下链接中提供的所有解决方案
method does not override or implement a method from a supertype - for Override
即使我也尝试过使用接口。我正在使用异步http 1.4.9 所以我将gradle脚本更改为
dependencies {
...
// there may or may not be a support library above these
compile 'com.loopj.android:android-async-http:1.4.9'
compile 'com.squareup.picasso:picasso:2.5.2'
}
我已经尝试了stackoverflow和github中可用的所有解决方案。但是我仍然无法清除该错误,它显示我onSuccess()和onFailure()方法不会覆盖超类
答案 0 :(得分:6)
检查导入
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.JsonHttpResponseHandler;
import org.json.JSONObject;
**import cz.msebera.android.httpclient.Header;**
并试试这个
client.get("sdsd", new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
super.onSuccess(statusCode, headers, response);
}
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
super.onFailure(statusCode, headers, throwable, errorResponse);
}
});
您正在使用错误的标头并覆盖不存在的方法。我想可能是那些旧的版本可用。
答案 1 :(得分:1)
onSuccess
函数调用
super.onSuccess();
这将解决您的错误。当您重写方法时,通常也会调用原始方法(超类的方法)。
onFailure
super.onFailure();
您可以查看此link以查看每个回调函数的参数。
正如 @hegazy 已经提到的那样,你对函数使用了错误的标题,你所遵循的教程很可能已经过时了。使用正确的标题检查所有可能功能的链接。在super
调用中,您可以传递相同的变量。
答案 2 :(得分:0)
只需使用正确的标题
尝试:
@Override
public void onSuccess(int statusCode, cz.msebera.android.httpclient.Header[] headers, JSONObject response) {
// called when response HTTP status is "200 OK"
}
@Override
public void onFailure(int statusCode,cz.msebera.android.httpclient.Header[] headers, Throwable e, JSONObject response) {
}