我在应用程序中的许多位置都使用了android-async-http
库。我通常的onFailure()
块看起来像这样:
APIClient.POST("/user/login", params, new JsonHttpResponseHandler() {
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
// Do onSuccess stuff...
}
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject error) {
Toast.makeText(
getApplicationContext(),
"Something Went Wrong!",
Toast.LENGTH_SHORT
).show();
// Other onFailure stuff
}
});
所以我基本上在每个onFailure
块中都展示这个吐司。难道没有更好的方法吗?我不能每次都用原来的APIClient.POST()
方法做点什么来为我做这件事吗?因此,如果我不覆盖一个调用的 onFailure 块,它仍然显示此 Toast。这是我APIClient.POST
方法:
public static void POST(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
// Maybe do somesthing with responseHandler here before passing it off to AsyncHttpClient?
client.post(getAbsoluteUrl(url), params, responseHandler);
}
感谢我能得到的任何帮助。谢谢!
你可以这样做,并使用这个类而不是JsonHttpResponse:
public class MyJsonHttpResponseHandler extends JsonHttpResponseHandler {
private Context context;
public MyJsonHttpResponseHandler(Context context){
super();
this.context = context;
}
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
Toast.makeText(
context,
"Something Went Wrong!",
Toast.LENGTH_SHORT
).show();
}
}
像这样使用它
APIClient.POST("/user/login", params, new MyJsonHttpResponseHandler(getActivity()){ ....