Это повторяющиеся проблемы, которые я продолжаю получать в Android Studio. Я пойду использовать класс JSONArray, и он скажет мне, что «вызов требует уровня API 19 (текущий минимум 15)». Странно то, что я могу использовать JSONArray в других местах того же класса.
Некоторые вещи, которые я пробовал, это очистка и сборка проекта (ничего не делает), перезапуск Android Studio (также ничего не делает для решения проблемы) и переписывание метода, использующего JSONArray, или его перемещение (иногда это работает)
Вот пример, когда я не понимаю проблему
private void makeApiCall(String text) {
APICall.make(context, text, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
List<Employee> employees = new ArrayList<>();
try {
JSONArray array = new JSONArray(response);
employees = new APIHelper().populateEmployeetList(array);
} catch (Exception e) {
e.printStackTrace();
}
autoAdapter.setData(employees);
autoAdapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
}
И вот пример, когда я получаю ошибку
private void getJobs(String text){
APICall.getJobsByPartial(context, text, new Response.Listener() {
@Override
public void onResponse(Object response) {
try{
List<Function> functions = new ArrayList<>();
JSONArray jobs = new JSONArray(response);
functions = new APIHelper().populateFunctionList(jobs);
jobAdapter.setData(functions);
jobAdapter.notifyDataSetChanged();
}
catch (JSONException ex){
ex.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
}




В вашем первом фрагменте кода response — это String. Конструктор JSONArray, который принимает String, существует с API уровня 1.
Во втором фрагменте кода response — это Object. Конструктор JSONArray, который принимает Object, существует только с уровня API 19.
Во втором фрагменте кода APICall.getJobsByPartial() должен давать вашему обратному вызову нечто более конкретное, чем Object.