JSONArray требует более высокого уровня API, но без проблем используется в том же классе

Это повторяющиеся проблемы, которые я продолжаю получать в 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) {

            }
        });
    }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
17
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашем первом фрагменте кода response — это String. Конструктор JSONArray, который принимает String, существует с API уровня 1.

Во втором фрагменте кода response — это Object. Конструктор JSONArray, который принимает Object, существует только с уровня API 19.

Во втором фрагменте кода APICall.getJobsByPartial() должен давать вашему обратному вызову нечто более конкретное, чем Object.

Другие вопросы по теме