如果没有通过参数传递则重写方法
Overriding methods if not passed by argument
我正在为 android 使用 library 在我的应用程序和我的网站之间进行 HTTP 通信。对于库,它允许您创建一个静态 class,然后可以在整个应用程序中调用它。
调用静态 class 方法时会发生什么,基本上您只需将参数传递给它,其余的由它完成(很明显)。这些参数之一是 AsyncHttpResponseHandler
,它允许您覆盖方法并处理 AsyncTask 的不同部分,它的 运行.
像这样:
里面的静态方法class
public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
client.get(getAbsoluteUrl(url, false), params, responseHandler);
}
然后在调用该方法时(例如):
TwitterRestClient.get("statuses/public_timeline.json", null, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
// If the response is JSONObject instead of expected JSONArray
}
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
// Pull out the first event on the public timeline
JSONObject firstEvent = timeline.get(0);
String tweetText = firstEvent.getString("text");
// Do something with the response
System.out.println(tweetText);
}
});
您可以覆盖的方法之一是 onFailure()
。
我想知道的是,有没有办法为 onFailure()
覆盖设置 'default'?我希望每次调用 get(url, params, responseHandler)
方法时都将其设置为相同,而不必每次都重新声明它,但我不知道有任何设置方法,同时仍然考虑到传递的AsyncHttpResponseHandler
参数。
您必须每次 @Override onFailure()
告诉每个单独的请求是否必须(或不)执行 onFailure
成功。
您可以做的是创建一个实用程序方法/class 来处理所有 onFailure()
请求。
示例:
TwitterRestClient.get("statuses/public_timeline.json", null, new JsonHttpResponseHandler() {
// other methods overrides
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
FailureClass.handlerMethod(statusCode, headers, responseBody, error);
}
}
class FailureClass {
public static handlerMethod(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
// do the common stuff, redirect or what you want...
}
}
我正在为 android 使用 library 在我的应用程序和我的网站之间进行 HTTP 通信。对于库,它允许您创建一个静态 class,然后可以在整个应用程序中调用它。
调用静态 class 方法时会发生什么,基本上您只需将参数传递给它,其余的由它完成(很明显)。这些参数之一是 AsyncHttpResponseHandler
,它允许您覆盖方法并处理 AsyncTask 的不同部分,它的 运行.
像这样:
里面的静态方法class
public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
client.get(getAbsoluteUrl(url, false), params, responseHandler);
}
然后在调用该方法时(例如):
TwitterRestClient.get("statuses/public_timeline.json", null, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
// If the response is JSONObject instead of expected JSONArray
}
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
// Pull out the first event on the public timeline
JSONObject firstEvent = timeline.get(0);
String tweetText = firstEvent.getString("text");
// Do something with the response
System.out.println(tweetText);
}
});
您可以覆盖的方法之一是 onFailure()
。
我想知道的是,有没有办法为 onFailure()
覆盖设置 'default'?我希望每次调用 get(url, params, responseHandler)
方法时都将其设置为相同,而不必每次都重新声明它,但我不知道有任何设置方法,同时仍然考虑到传递的AsyncHttpResponseHandler
参数。
您必须每次 @Override onFailure()
告诉每个单独的请求是否必须(或不)执行 onFailure
成功。
您可以做的是创建一个实用程序方法/class 来处理所有 onFailure()
请求。
示例:
TwitterRestClient.get("statuses/public_timeline.json", null, new JsonHttpResponseHandler() {
// other methods overrides
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
FailureClass.handlerMethod(statusCode, headers, responseBody, error);
}
}
class FailureClass {
public static handlerMethod(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
// do the common stuff, redirect or what you want...
}
}