以前碰到过好多次clean解决不了的R大面积报红,可是代码没什么问题呀,layout也没什么问题没报错呀,找bug真的是毫无头绪地猜我可能是哪里错了,后来学会了耐心看logcat找有用的提示,根据提示的问题去改代码或者搜索,改bug就快好多啦(然而其实还是很慢)。今天写自定义view的时候就碰到了,所以赶快截图来记到博客里了嘻嘻嘻。
Android出现大面积R报红的话一般是资源文件的问题,首先是用Alt+Enter看能否引入本项目的R包,如果提示中没有import选项的话,试一试clean之后再buid,如果还是不行的话就很可能是在代码中使用了没有定义的或者是有问题的资源。先在控制台的build中查看错误,再到logcat中查看日志,仔细看一般都可以发现是哪里的问题。
比如android 自定义view中如果出现了R.styleable爆红问题,如果没有提示attribute缺失的话,点上面build中的clean project就可以好了,如果提示了attribute缺失的话,去view的代码里看xml里的app:attribute对应在代码里的使用到的资源文件有没有问题,改了之后再clean->build就可以了。
举个例子我在layout中使用自定义的view时给自定义的三个属性赋了值
app:circleRoundWidth="18dp"
app:circleTextColor="#999999"
app:circleTextSize="15sp"
资源文件(colcors.xml)没有写styleable的话资源文件本身并不会报错,但是我的自定义view是需要用到这个资源的,返回到代码里可以看到这个变量有使用到R.styleable,找不到对应的正确的资源文件R就会大面积报错,build之后提示错误,attribute缺失。
error:attribute ‘xxxxxx’ not found
解决步骤
- 在资源文件colcors.xml中加入我所需要定义的styleable
- 资源问题解决了之后选择build中的 clean project,没有引用资源包的话引用一下,之后就不会有R报红了。
import 你的包名.R;