SupportFragmentManager无法识别布局view id提示未解析引用如何解决
问题原因
R.id.placeHolder提示未解析引用,和SupportFragmentManager本身无关,是以下几个问题导致的:
- 导包错误:文件顶部导入了系统自带的
android.R类,而非你当前项目包名下自动生成的R类,系统R类不存在你自定义布局里的控件id - 代码语法错误:你贴出的Kotlin代码在onCreate方法闭合后多写了一个多余的
},语法异常会导致IDE无法正常索引布局资源 - (非必现)IDE缓存异常,修改布局后没有同步更新R类索引
修复方案
按以下顺序操作即可解决:
- 先修正代码语法错误,删掉onCreate方法外多余的那个
},保证类结构闭合正确 - 检查文件顶部的import列表,删除
import android.R语句,导入你自己项目包名对应的R类,例如包名为com.xxx.yourapp时,导包语句为import com.xxx.yourapp.R - 推荐使用更稳妥的ViewBinding引用写法,避免后续再出现导错R类的问题,替换Fragment事务添加部分的代码:
supportFragmentManager .beginTransaction() // 直接从ViewBinding对象取容器控件的id,不需要手动写R.id引用 .add(binding.placeHolder.id, FirstFragment()) .commit()
- 如果上述操作完成后代码仍然标红,执行一次项目清理重建:依次点击Android Studio菜单栏的
Build -> Clean Project,等待清理完成后再点击Build -> Rebuild Project,等待构建完成索引就会正常。
内容的提问来源于stack exchange,提问作者Alex20280
相关产品推荐
相关产品推荐

