Android Studio XML新增唯一ID txtVw6触发ID报错问题
Android Studio新增布局ID报不存在假报错问题处理
问题表现
- 原本可正常编译运行的XML布局文件,新增id配置为
txtVw6的TextView控件后,弹出ID相关报错 - 全局核查确认
txtVw6ID唯一,不存在重名冲突问题 - 选中报错位置按
Alt+Enter快捷键时,IDE仅给出「create resource id value」的操作提示,无法定位具体错误原因 - 直接关闭Android Studio后重新启动,报错自动消失
问题原因
这不是代码编写错误,是Android Studio的资源索引缓存异常导致的假报错。
IDE在实时编辑布局文件的过程中,会后台自动维护一份R资源类的ID映射索引,新增控件ID时偶尔会出现同步卡顿、索引更新不及时的问题,此时IDE没有把新写入的ID纳入索引库,就会误判该ID不存在,弹出创建新资源ID的提示。
解决方法(按效率从高到低排序)
- 优先选择项目同步:点击顶部菜单栏
File -> Sync Project with Gradle Files,等待Gradle同步完成后资源索引会自动刷新,绝大多数场景下同步完报错就会直接消失,不需要重启IDE - 同步无效时强制清缓存:点击顶部菜单栏
File -> Invalidate Caches...,在弹出的窗口中选择Invalidate and Restart,IDE会清空所有旧的缓存文件后重启,全量重建资源索引,可以解决绝大多数缓存导致的假报错 - 临时处理:直接完全关闭Android Studio后重新打开项目,也会触发部分缓存重建,本次遇到的报错就是通过这种方式解决的,缺点是重启不一定能彻底清理异常缓存,后续可能复现同类问题
对应XML布局完整代码
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/txtVw1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25dp" android:text="Hello world!"/> <TextView android:id="@+id/txtVw2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10pt" android:textSize="25dp" android:textColor="@color/white" android:gravity="center" android:background="@color/purple_200" android:text="15\nJun"/> <TextView android:id="@+id/txtVw3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10pt" android:textSize="25dp" android:gravity="center" android:text="Text number3"/> <TextView android:id="@+id/txtVw4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10pt" android:textSize="25dp" android:gravity="center" android:text="TextView number4"/> <TextView android:id="@+id/txtVw5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableLeft="@drawable/android0" android:layout_marginTop="10pt" android:textSize="25dp" android:text="Image TextView"/> <TextView android:id="@+id/txtVw6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10pt" android:textSize="25dp" android:text="TextView 6"/> </LinearLayout> </ScrollView>
内容的提问来源于stack exchange,提问作者Fatima
相关产品推荐
相关产品推荐

