LiveData_LifecycleBoundObserver_LifecycleAdapter 无法转换为 GeneratedAdapter
LiveData_LifecycleBoundObserver_LifecycleAdapter cannot be cast to GeneratedAdapter
-
android
-
android-gradle-plugin
-
kotlin-android-extensions
-
android-livedata
-
android-architecture-components
我在我的 android 工作室项目中使用 kotlin
,我正在尝试将观察者添加到包含 ArrayList
的 MutableLiveData
,但我得到下面的异常。
java.lang.ClassCastException: android.arch.lifecycle.LiveData_LifecycleBoundObserver_LifecycleAdapter cannot be cast to android.arch.lifecycle.GeneratedAdapt
at android.arch.lifecycle.Lifecycling.createGeneratedAdapter(Lifecycling.java:79)
at android.arch.lifecycle.Lifecycling.getCallback(Lifecycling.java:62)
at android.arch.lifecycle.LifecycleRegistry$ObserverWithState.<init>(LifecycleRegistry.java:346)
at android.arch.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.java:162)
at android.arch.lifecycle.LiveData.observe(LiveData.java:199)
项目级别build.gradle
buildscript {
ext.kotlin_version = '1.2.10'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.0-alpha05'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
应用的 build.gradle
android {
dataBinding {
enabled true;
}
}
dependencies {
implementation "android.arch.lifecycle:runtime:1.0.3"
implementation "android.arch.lifecycle:extensions:1.0.0-alpha9-1"
kapt "android.arch.lifecycle:compiler:1.0.0-alpha9-1"
//...
}
我的activity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//...
val liveData = MutableLiveData<ArrayList<Media>>()
//...
liveData.observe(this, object : Observer<ArrayList<Media>>{
override fun onChanged(t: ArrayList<Media>?) {
if(t?.size!! > 0){
binding.totalTv.text =t.size.toString()
binding.totalTv.visibility = View.VISIBLE
}
}
})
//...
}
如何解决错误?
我用以下代码测试了您的代码:
dataBinding {
enabled true
}
sourceCompatibility
和 targetCompatibility
到 Java 8
gradle 4.2.1
android plugin 3.0.1
kotlin plugin 1.2.10
依赖关系:
appcompat-v7 27.0.2
android.arch.lifecycle:runtime:1.0.3
android.arch.lifecycle:extensions:1.0.0
android.arch.lifecycle:compiler:1.0.0
一切正常...
我改了android.arch.lifecycle:extensions
来自
implementation "android.arch.lifecycle:extensions:1.0.0-alpha9-1"
到
implementation "android.arch.lifecycle:extensions:1.0.0"
然后同步我的项目就成功了。感谢@MatPag 的见解
android
android-gradle-plugin
kotlin-android-extensions
android-livedata
android-architecture-components
我在我的 android 工作室项目中使用 kotlin
,我正在尝试将观察者添加到包含 ArrayList
的 MutableLiveData
,但我得到下面的异常。
java.lang.ClassCastException: android.arch.lifecycle.LiveData_LifecycleBoundObserver_LifecycleAdapter cannot be cast to android.arch.lifecycle.GeneratedAdapt
at android.arch.lifecycle.Lifecycling.createGeneratedAdapter(Lifecycling.java:79)
at android.arch.lifecycle.Lifecycling.getCallback(Lifecycling.java:62)
at android.arch.lifecycle.LifecycleRegistry$ObserverWithState.<init>(LifecycleRegistry.java:346)
at android.arch.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.java:162)
at android.arch.lifecycle.LiveData.observe(LiveData.java:199)
项目级别build.gradle
buildscript {
ext.kotlin_version = '1.2.10'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.0-alpha05'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
应用的 build.gradle
android {
dataBinding {
enabled true;
}
}
dependencies {
implementation "android.arch.lifecycle:runtime:1.0.3"
implementation "android.arch.lifecycle:extensions:1.0.0-alpha9-1"
kapt "android.arch.lifecycle:compiler:1.0.0-alpha9-1"
//...
}
我的activity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//...
val liveData = MutableLiveData<ArrayList<Media>>()
//...
liveData.observe(this, object : Observer<ArrayList<Media>>{
override fun onChanged(t: ArrayList<Media>?) {
if(t?.size!! > 0){
binding.totalTv.text =t.size.toString()
binding.totalTv.visibility = View.VISIBLE
}
}
})
//...
}
如何解决错误?
我用以下代码测试了您的代码:
dataBinding { enabled true }
sourceCompatibility
和targetCompatibility
到 Java 8gradle 4.2.1
android plugin 3.0.1
kotlin plugin 1.2.10
依赖关系:
appcompat-v7 27.0.2
android.arch.lifecycle:runtime:1.0.3
android.arch.lifecycle:extensions:1.0.0
android.arch.lifecycle:compiler:1.0.0
一切正常...
我改了android.arch.lifecycle:extensions
来自
implementation "android.arch.lifecycle:extensions:1.0.0-alpha9-1"
到
implementation "android.arch.lifecycle:extensions:1.0.0"
然后同步我的项目就成功了。感谢@MatPag 的见解