无法访问androidx.savedstate.SavedStateRegistryOwner问题的解决方法
这种问题我开发时也碰到过好几次,大概率是依赖配置、IDE缓存或者AndroidX兼容层面的问题,一步步排查就能搞定:
检查SavedState相关依赖是否正确添加
这个类属于androidx.lifecycle:lifecycle-viewmodel-savedstate库,你得确保Module级别的build.gradle(或build.gradle.kts)里已经加了对应的依赖,比如:implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.1"建议用最新的稳定版,你可以在Android Studio的Dependencies界面里搜索获取最新版本号。
同步Gradle并清理IDE缓存
很多时候就是IDE没及时识别到依赖变化,先点工具栏里的「Sync Project with Gradle Files」按钮同步项目。要是还不行,就清理缓存重启IDE:
路径是File -> Invalidate Caches... -> 选择Invalidate and Restart,这招能解决绝大多数IDE识别异常的问题。确认AndroidX配置是否正确
打开项目根目录的gradle.properties文件,确保下面两行配置存在且为true:android.useAndroidX=true android.enableJetifier=true要是你的项目之前用的是旧Support库,得确认已经完全迁移到AndroidX,绝对不能混用两类库,不然很容易出现找不到类的情况。
检查导入语句是否正确
有时候IDE会自动导入错误的包,你要确保代码里的导入是:import androidx.savedstate.SavedStateRegistryOwner;而不是任何带
android.support前缀的旧包。排查依赖冲突
如果以上步骤都没解决,可以查看项目的依赖树,看看有没有其他库引入了冲突的lifecycle版本。在终端里执行:./gradlew dependencies找到
lifecycle-viewmodel-savedstate相关的依赖,确认所有版本一致,或者在build.gradle里强制指定统一版本。
要是还是不行,试试删除项目根目录下的.gradle文件夹,然后重新同步Gradle,有时候缓存文件损坏也会导致这类奇怪的问题。
内容的提问来源于stack exchange,提问作者blue mei

