使用NavigationUI.navigateUp参数过多报错,尝试方案遇新问题
问题代码
val navController = this.findNavController(R.id.my_nav_host_fragment) return NavigationUI.navigateUp(drawerLayout, navController) // 该行报错
报错信息
对于androidx.navigation.NavController中定义的
public open fun navigateUp(): Boolean方法,传入参数过多
当前导入语句
import androidx.navigation.findNavController
Gradle配置
def nav_version = "2.5.3" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
尝试解决方案后的新问题
尝试某方案后问题未解决,反而出现新错误:
无法解析引用:findNavController
解决方法
修正NavigationUI导入
确保导入正确的NavigationUI包,避免误调用NavController自身的无参navigateUp方法:import androidx.navigation.ui.NavigationUI补全Navigation依赖
你的Gradle仅配置了Safe Args插件,需在App模块的build.gradle中添加Navigation核心和UI依赖:implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version"缺少这些依赖会导致
NavigationUI方法不可用,也可能引发findNavController解析失败。调整findNavController调用方式
- 若在Activity中调用:确保布局内存在id为
my_nav_host_fragment的NavHostFragment,直接使用扩展方法即可:val navController = findNavController(R.id.my_nav_host_fragment) - 若在Fragment中调用:需通过Activity或View获取NavController:
val navController = requireActivity().findNavController(R.id.my_nav_host_fragment) // 或 val navController = view.findNavController()
- 若在Activity中调用:确保布局内存在id为
内容的提问来源于stack exchange,提问作者Nakiro
相关产品推荐
相关产品推荐

