Kotlin: java.lang.ClassCastException: java.lang.Long нельзя преобразовать в java.lang.Integer

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

var count = sharedPref.getInt("flutter.badgeCount", 0)    // line 12
ShortcutBadger.applyCount(applicationContext, count+1)    // line 13

count должно быть целым числом, потому что sharedPref.getInt возвращает целое число, а applyCount() получает целое число в качестве второго параметра. Исключение выдается во время выполнения в строке 12. Есть ли что-то, чего я не вижу? (я новичок в котлине)


person Fabio    schedule 09.12.2020    source источник
comment
У вас должно быть длинное значение, сохраненное в общих настройках для этого ключа.   -  person Tenfour04    schedule 09.12.2020
comment
потому что sharedPref.getInt возвращает целое число, в случае успеха. В вашем случае это не удается, поэтому сохраненное значение не является целым числом (и из сообщения об ошибке мы знаем, что оно длинное). Строка 13 не имеет значения, потому что вы никогда не доберетесь до нее.   -  person Alexey Romanov    schedule 10.12.2020


Ответы (1)


Используйте следующее. Это решит проблему.

var count = sharedPref.getLong("flutter.badgeCount", 0L)  
ShortcutBadger.applyCount(applicationContext, count.toInt()+1)
person akhil nair    schedule 09.12.2020
comment
Я получил сообщение об ошибке: Несоответствие типов: предполагаемый тип — Long, но ожидался Int. - person Fabio; 09.12.2020
comment
Хорошо, я привел count к целому числу с count.toInt() и теперь работает нормально - person Fabio; 09.12.2020