Итак, я реализовал интерфейс обратного вызова для хранения возвращенных данных onResponse в локальной переменной в MainActivity. Учитывая, что я это реализовал, я не совсем понимаю, почему в этом случае используется интерфейс? Изначально у меня была переменная с именем isValid
, которая была удалена в рабочем коде для хранения значения onResponse
, 1 или 0. Но к ней нельзя было получить доступ после вызова в основном после apiValid()
. Почему это так? Кто-нибудь может объяснить? Мой код ниже.
Интерфейс обратного вызова
public interface VolleyCallback{
void onSuccess(String result);
}
Функция apiValid:
private void apiValid(final VolleyCallback callback,final String jwt){
rq = MySingleton.getInstance(this.getApplicationContext()).getRequestQueue();
StringRequest sr = new StringRequest(Request.Method.POST, API_URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
String result = response;
callback.onSuccess(result);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
String option="verify";
params.put("option",option);
params.put("jwt",jwt);
return params;
}
};
MySingleton.getInstance(this).addToRequestQueue(sr);
}
Вызов функции для выполнения залпа в MainActivity:
apiValid(new VolleyCallback() {
@Override
public void onSuccess(String result) {
if(result.equals("1")){
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
intent.putExtra("Member",test_member);
startActivity(intent);
}else{
Log.d("console","Invalid key");
}
}
})
Любое объяснение приветствуется. Спасибо за внимание.