Ответ 1
Вы хотите использовать интерфейсы обратного вызова, например:
public void getString(final VolleyCallback callback) {
StringRequest strReq = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
... // (optionally) some manipulation of the response
callback.onSuccess(response);
}
}...
}}
Если обратный вызов определяется как
public interface VolleyCallback{
void onSuccess(String result);
}
Пример кода внутри действия:
public void onResume(){
super.onResume();
getString(new VolleyCallback(){
@Override
public void onSuccess(String result){
... //do stuff here
}
});
}
Вы также можете сделать VolleyCallback
более надежным, используя общие типы, если хотите выполнить обработку, или добавив методы start()
, failed(Exception e)
, complete()
и т.д., чтобы выполнить немного более мелкозернистую проверку состояния.
Имейте в виду, что это асинхронный вызов, поэтому вам придется обновлять представления и т.д., когда вы возвращаете результат (внутри success()
).