升级Lifecycle依赖至2.6.0-beta01后出现Transformations引用未解析问题
解决Lifecycle 2.6.0-beta01中Transformations无法引用的问题
问题原因
从Lifecycle 2.6.0-beta01版本开始,androidx.lifecycle.Transformations类被标记为废弃,原有的switchMap、map等方法被替换为LiveData的扩展函数,移至androidx.lifecycle.liveData相关包下。
修复步骤
- 替换导入语句
移除原有导入:
import androidx.lifecycle.Transformations
替换为对应扩展函数的导入:
import androidx.lifecycle.switchMap
- 修改代码调用逻辑
将原有的静态方法调用改为LiveData对象的扩展函数形式,同时可以简化返回语句:
原代码:
var myList: LiveData<List<Bookmark>> = Transformations.switchMap( bookMarkType ) { input: Int? -> when (input) { ARTICLE_BOOKMARK -> return@switchMap repository.articleBookmarks WEBSITE_BOOKMARK -> return@switchMap repository.websiteBookmarks LINK_BOOKMARK -> return@switchMap repository.linkBookmarks } repository.websiteBookmarks }
修改后代码:
var myList: LiveData<List<Bookmark>> = bookMarkType.switchMap { input: Int? -> when (input) { ARTICLE_BOOKMARK -> repository.articleBookmarks WEBSITE_BOOKMARK -> repository.websiteBookmarks LINK_BOOKMARK -> repository.linkBookmarks else -> repository.websiteBookmarks } }
- 确认依赖完整性
确保build.gradle中已正确引入Lifecycle的KTX依赖(扩展函数需要此依赖支持):
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.6.0-beta01" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.0-beta01"
补充说明
如果需要使用原Transformations中的其他方法(如map),同样替换为对应扩展函数,导入androidx.lifecycle.map即可。
内容的提问来源于stack exchange,提问作者Zain
相关产品推荐
相关产品推荐

