如何修复Navigation Drawer Activity中setOpenableLayout方法找不到的报错
问题原因
setOpenableLayout() 是Android Navigation Component 2.4.0 版本才新增的API,出现该编译报错是因为你当前项目引入的Navigation依赖版本低于2.4.0,对应版本的AppBarConfiguration.Builder类中没有这个方法。
解决方案
方案1:升级Navigation依赖版本(推荐)
将项目中所有Navigation相关依赖统一升级到2.4.0及以上的稳定版本即可,修改app模块build.gradle中的依赖配置示例:
// Java 版本依赖 implementation "androidx.navigation:navigation-fragment:2.7.5" implementation "androidx.navigation:navigation-ui:2.7.5" // 如使用Kotlin,对应更换为ktx版本依赖 // implementation "androidx.navigation:navigation-fragment-ktx:2.7.5" // implementation "androidx.navigation:navigation-ui-ktx:2.7.5"
修改完成后同步Gradle、清理项目缓存后重新编译即可正常使用setOpenableLayout()方法。
方案2:使用低版本兼容API
如果暂时不想升级Navigation版本,可以直接用旧版本的同名功能方法setDrawerLayout()替换即可,修改后的代码如下:
mAppBarConfiguration = new AppBarConfiguration.Builder( R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow) .setDrawerLayout(drawer) .build();
该方法和setOpenableLayout()功能完全一致,仅命名不同,适配2.4.0以下的所有Navigation版本。
注意事项
- 升级依赖后如果出现兼容性报错,可同步升级appcompat、material等基础依赖到适配版本,避免版本冲突
- 重新编译前建议执行Build -> Clean Project + Rebuild Project操作,清除旧编译缓存
内容的提问来源于stack exchange,提问作者wiihii
相关产品推荐
相关产品推荐

