Решение для многократного использования фабричного шаблона проектирования:
Чтобы вернуть или получить ответ Volley от другого метода, вам нужно написать функцию обратного вызова, что легко сделать с помощью интерфейсов.
Это простое решение взято из моей архитектуры MVC для приложений Android, разработанной с полной концепцией повторного использования и разделения ответственности.
Предположим, что JSONObject - это ваш ответ с сервера
Шаг 1)
Создайте Интерфейс Обратный вызов сервера
package xx.xx.xx.utils;
import org.json.JSONObject;
public interface ServerCallback{
void onSuccess(JSONObject result);
}
Шаг 2) Предположим, что ваш метод Запрос сервера Volley находится в Контроллере или в любом другом общем «контекстном» классе, сделайте это в своей любой Деятельности.
Controller controller = new Controller();
controller.youFunctionForVolleyRequest(email, password, this, loginUrl, new ServerCallback() {
@Override
public void onSuccess(JSONObject response) {
// do stuff here
}
}
);
3) В вашем классе контроллера вызовите функцию ServerCallback в inResponse(), которая будет выполнять ваш код в Activity только при ответе от сервера — миссия выполнена!
public void youFunctionForVolleyRequest(final String email , final String password ,final Context context , final String URL, final ServerCallback callback)
{
HashMap<String, String> params = new HashMap<String, String>();
params.put("email", email);
params.put("password", password);
Log.e("sending json",params.toString());
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
URL, new JSONObject(params), new Response.Listener<JSONObject>()
{
@Override
public void onResponse(JSONObject response) {
callback.onSuccess(response); // call call back function here
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//VolleyLog.d("Volley error json object ", "Error: " + error.getMessage());
}
}){
@Override
public String getBodyContentType()
{
return "application/json";
}
};
// Adding request to request queue
AppController.getInstance().addToRequestQueue(jsonObjReq);
}
person
Divyanshu Jimmy
schedule
19.01.2016