安卓截击系统是否最终会让回调做类似java的事情?

安卓截击系统是否最终会让回调做类似java的事情?,java,android,android-volley,Java,Android,Android Volley,请求完成后,我必须做些事情。就像关闭加载对话框一样 我必须添加dialog.discouse() 截击有全局回调吗?我希望在同一个片段/活动中使用全局回调来处理错误/成功消息 JsonRequest jsonRequest = new JsonRequest (url, params, new Response.Listener<JSONObject>() { @Override publ

请求完成后,我必须做些事情。就像关闭加载对话框一样

我必须添加
dialog.discouse()

截击有全局回调吗?我希望在同一个片段/活动中使用全局回调来处理错误/成功消息

    JsonRequest jsonRequest = new JsonRequest
            (url, params, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    dialog.dismiss();
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    dialog.dismiss();
                }
            }) {
    };
JsonRequest-JsonRequest=new-JsonRequest
(url,params,new Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
dialog.dismise();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
dialog.dismise();
}
}) {
};

是的,您可以通过创建自定义截击请求来完成此操作。 请参阅下面的代码:

import java.io.UnsupportedEncodingException;
import java.util.Map;    
import org.json.JSONException;
import org.json.JSONObject;    
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;
import android.app.AlertDialog;

public class CustomRequest extends Request<JSONObject> {
    private Listener<JSONObject> listener;
    private Map<String, String> params;
    private AlertDialog dialog;

 //You can replace AlertDialog by the Type of dialog you use
    public CustomRequest(String url, Map<String, String> params,
            Listener<JSONObject> reponseListener, ErrorListener          errorListener,AlertDialog dialog)
          {
        super(Method.GET, url, errorListener);
        this.listener = reponseListener;
        this.params = params;
        this.dialog =dialog;
    }
    public CustomRequest(int method, String url, Map<String, String> params,
            Listener<JSONObject> reponseListener, ErrorListener errorListener) {
        super(method, url, errorListener);
        this.listener = reponseListener;
        this.params = params;
    }
    protected Map<String, String> getParams()
            throws com.android.volley.AuthFailureError {
        return params;
    }; 

    @Override
    protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
        try {
            //Here you can call dialog.dismiss();
            dialog.dismiss();
            String jsonString = new String(response.data,
                    HttpHeaderParser.parseCharset(response.headers));
            return Response.success(new JSONObject(jsonString),
                    HttpHeaderParser.parseCacheHeaders(response));
        } catch (UnsupportedEncodingException e) {
            return Response.error(new ParseError(e));
        } catch (JSONException je) {
            return Response.error(new ParseError(je));
        }
    }
    @Override
    protected void deliverResponse(JSONObject response) {
        // TODO Auto-generated method stub
        listener.onResponse(response);
    }
}
}
import java.io.UnsupportedEncodingException;
导入java.util.Map;
导入org.json.JSONException;
导入org.json.JSONObject;
导入com.android.volley.NetworkResponse;
导入com.android.volley.ParseError;
导入com.android.volley.Request;
导入com.android.volley.Response;
导入com.android.volley.Response.ErrorListener;
导入com.android.volley.Response.Listener;
导入com.android.volley.toolbox.HttpHeaderParser;
导入android.app.AlertDialog;
公共类CustomRequest扩展了请求{
私人倾听者;
私有映射参数;
私人警报对话框;
//您可以使用所使用的对话框类型替换AlertDialog
公共CustomRequest(字符串url、映射参数、,
侦听器reposeListener、ErrorListener ErrorListener、AlertDialog(对话框)
{
super(Method.GET、url、errorListener);
this.listener=reponlistener;
this.params=params;
this.dialog=dialog;
}
公共CustomRequest(int方法、字符串url、映射参数、,
侦听器reposeListener,ErrorListener ErrorListener){
super(方法、url、errorListener);
this.listener=reponlistener;
this.params=params;
}
受保护的映射getParams()
抛出com.android.volley.AuthFailureError{
返回参数;
}; 
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){
试一试{
//在这里您可以调用dialog.discouse();
dialog.dismise();
String jsonString=新字符串(response.data,
HttpHeaderParser.parseCharset(response.headers));
返回Response.success(新的JSONObject(jsonString),
HttpHeaderParser.parseCacheHeaders(响应));
}捕获(不支持的编码异常e){
返回Response.error(新的ParseError(e));
}捕获(JSONException je){
返回Response.error(newparseerror(je));
}
}
@凌驾
受保护的void deliverResponse(JSONObject响应){
//TODO自动生成的方法存根
onResponse(response);
}
}
}

让我知道这是否有效。:)

是的,您可以通过创建自定义截击请求来完成此操作。 请参阅下面的代码:

import java.io.UnsupportedEncodingException;
import java.util.Map;    
import org.json.JSONException;
import org.json.JSONObject;    
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;
import android.app.AlertDialog;

public class CustomRequest extends Request<JSONObject> {
    private Listener<JSONObject> listener;
    private Map<String, String> params;
    private AlertDialog dialog;

 //You can replace AlertDialog by the Type of dialog you use
    public CustomRequest(String url, Map<String, String> params,
            Listener<JSONObject> reponseListener, ErrorListener          errorListener,AlertDialog dialog)
          {
        super(Method.GET, url, errorListener);
        this.listener = reponseListener;
        this.params = params;
        this.dialog =dialog;
    }
    public CustomRequest(int method, String url, Map<String, String> params,
            Listener<JSONObject> reponseListener, ErrorListener errorListener) {
        super(method, url, errorListener);
        this.listener = reponseListener;
        this.params = params;
    }
    protected Map<String, String> getParams()
            throws com.android.volley.AuthFailureError {
        return params;
    }; 

    @Override
    protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
        try {
            //Here you can call dialog.dismiss();
            dialog.dismiss();
            String jsonString = new String(response.data,
                    HttpHeaderParser.parseCharset(response.headers));
            return Response.success(new JSONObject(jsonString),
                    HttpHeaderParser.parseCacheHeaders(response));
        } catch (UnsupportedEncodingException e) {
            return Response.error(new ParseError(e));
        } catch (JSONException je) {
            return Response.error(new ParseError(je));
        }
    }
    @Override
    protected void deliverResponse(JSONObject response) {
        // TODO Auto-generated method stub
        listener.onResponse(response);
    }
}
}
import java.io.UnsupportedEncodingException;
导入java.util.Map;
导入org.json.JSONException;
导入org.json.JSONObject;
导入com.android.volley.NetworkResponse;
导入com.android.volley.ParseError;
导入com.android.volley.Request;
导入com.android.volley.Response;
导入com.android.volley.Response.ErrorListener;
导入com.android.volley.Response.Listener;
导入com.android.volley.toolbox.HttpHeaderParser;
导入android.app.AlertDialog;
公共类CustomRequest扩展了请求{
私人倾听者;
私有映射参数;
私人警报对话框;
//您可以使用所使用的对话框类型替换AlertDialog
公共CustomRequest(字符串url、映射参数、,
侦听器reposeListener、ErrorListener ErrorListener、AlertDialog(对话框)
{
super(Method.GET、url、errorListener);
this.listener=reponlistener;
this.params=params;
this.dialog=dialog;
}
公共CustomRequest(int方法、字符串url、映射参数、,
侦听器reposeListener,ErrorListener ErrorListener){
super(方法、url、errorListener);
this.listener=reponlistener;
this.params=params;
}
受保护的映射getParams()
抛出com.android.volley.AuthFailureError{
返回参数;
}; 
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){
试一试{
//在这里您可以调用dialog.discouse();
dialog.dismise();
String jsonString=新字符串(response.data,
HttpHeaderParser.parseCharset(response.headers));
返回Response.success(新的JSONObject(jsonString),
HttpHeaderParser.parseCacheHeaders(响应));
}捕获(不支持的编码异常e){
返回Response.error(新的ParseError(e));
}捕获(JSONException je){
返回Response.error(newparseerror(je));
}
}
@凌驾
受保护的void deliverResponse(JSONObject响应){
//TODO自动生成的方法存根
onResponse(response);
}
}
}

让我知道这是否有效。:)

这是可行的,我还尝试制作一个包装器方法来添加“onFinish”支持。但是像这一个,我必须为不同类型的请求(例如StringRequest)做它。我认为如果你知道的话,你可以使用泛型概念。泛型概念似乎是生成请求包装请求的一个好方法,我稍后会尝试它——它可以工作,我还尝试制作一个包装方法来添加“onFinish”支持。但是像这个一样,我必须为不同类型的请求,比如StringRequest,做这个。我认为如果你知道的话,你可以使用泛型概念