Kotlin:java.lang.ClassCastException:java.lang.Long不能转换为java.lang.Integer

Kotlin:java.lang.ClassCastException:java.lang.Long不能转换为java.lang.Integer,kotlin,exception,casting,long-integer,Kotlin,Exception,Casting,Long Integer,我知道关于这个例外有很多问题,但没有一个答案适合我的情况 var count = sharedPref.getInt("flutter.badgeCount", 0) // line 12 ShortcutBadger.applyCount(applicationContext, count+1) // line 13 count应为整数,因为sharedPref.getInt返回整数,并且applyCount()接收整数作为第二个参数。异常在运行时第12行抛出

我知道关于这个例外有很多问题,但没有一个答案适合我的情况

var count = sharedPref.getInt("flutter.badgeCount", 0)    // line 12
ShortcutBadger.applyCount(applicationContext, count+1)    // line 13
count
应为整数,因为
sharedPref.getInt
返回整数,并且
applyCount()
接收整数作为第二个参数。异常在运行时第12行抛出。
有什么我看不见的吗?(我对kotlin很陌生)

使用以下方法。这将解决问题

var count = sharedPref.getLong("flutter.badgeCount", 0L)  
ShortcutBadger.applyCount(applicationContext, count.toInt()+1)

您必须在该键的共享首选项中存储一个长值。如果成功,则“因为sharedPref.getInt返回一个整数”。在您的例子中,它失败了,所以存储的值不是整数(从错误消息中我们知道它是一个长的值)。第13行并不重要,因为您从未到达那里。我得到一个错误:“类型不匹配:推断的类型很长,但需要Int”。好的,我使用
count.toInt()将
count
转换为整数,现在可以正常工作了