我在我的应用中的许多位置使用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
块中显示此Toast。难道没有更好的方法吗?我不能用原始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);
}
感谢我能得到的任何帮助。谢谢!
答案 0 :(得分:1)
你可以这样做,并使用这个类而不是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()){ ....