2013-07-31 11 views
0

Я закончил эту игру месяц назад, и все прошло отлично до сегодняшнего дня. Я получаю ошибку на линии:для вызова требуется уровень api 9 (текущий минимум 7) java.text.normalizer # normalize

odgovorNormalized = Normalizer.normalize(konResenje, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", ""); 

Если я иду в файл манифеста и изменить уровень API к чему-либо, даже до 6, я не получаю ошибки больше. Пока я не что-то изменил в своем коде.

Я только что вспомнил, что сегодня я изменил кодировку своего проекта на латинский. Я не знаю, имеет ли это какое-либо отношение к этому.

Все прошло отлично до сегодняшнего дня.

+3

Ну изменение уровня API до * 6 * не поможет, когда метод был введен в уровне API 9, конечно, ... –

+0

Я знаю, что ... Я изменить это просто проверьте мою теорию. И до сегодняшнего дня он работал нормально. – marjanbaz

+1

Ну попробуйте изменить его на * 9 * вместо 6. Тогда все должно быть хорошо. Документация ясно показывает, что она доступна только на уровне API 9. Я подозреваю, что когда он работал, у вас был уровень API 9 или выше. –

ответ

6

Ошибка возникает при помощи инструментов анализа статического кода. Да, он будет компилироваться, Да, он будет работать. Да, это будет сбой во время выполнения на любом устройстве с API < 9.

Надлежащая вещь, чтобы сделать, это перейти на API:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { 
     /* Use Normalizer normally */ 
    } else { 
     /* Fall back on some default behavior */ 
    } 

Вы можете подавить ошибки, как это, но всегда убедитесь, что вы» ве фиксированные их первыми:

@SuppressLint("NewApi") 
    public void methodThatUsesNewAPI() {} 
Смежные вопросы