在AndroidAsyncHTTP中的每个onFailure块中调用一个函数



我在应用程序中的许多位置都使用了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()){ ....

相关内容

  • 没有找到相关文章

最新更新