Android Studio中R文件丢失的解决办法

刚才折腾AS制作一个小项目,本来用的好好的突然一下无法运行到模拟器或测试机上了,MainActivity.java文件中R报红,提示"cannot resolve symbol R"

Android Studio中R文件丢失的解决办法_第1张图片

消息窗口提示了错误信息(起始当时根本没怀疑id会有问题,也是绕了一大圈才回过头来纠错):

Android Studio中R文件丢失的解决办法_第2张图片


同时项目目录下的R文件也离奇失踪:



stackoverflow上看了一下老外们的撕逼,大都说的是让Build--Rebuild Project或者Build--Clean Project。试过了都无效,于是开始硬着头皮排除法一点一点的测试。


这是修复前activity_main.xml下的代码:

    <TextView
        android:id="@+id/text_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Quantity"
        android:textAllCaps="true"
        android:textSize="32sp"
        android:textStyle="bold"
        android:layout_centerHorizontal="true"
        android:layout_above="@+id/text_sum"
        android:layout_marginBottom="16dp"/>
    <TextView
        android:id="@+id/text_sum"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0"
        android:textSize="40sp"
        android:textStyle="italic"
        android:layout_above="@id/text_p"
        android:layout_marginBottom="40dp"
        android:layout_centerHorizontal="true"/>

由于之前消息框里提示了“at ' layout_above ' with value ' @id/text_p' ”

那就把它烧掉好咯。删掉之后再次Build -- Rebuild Project   我擦嘞!!!居然好了。 R文件也乖乖滚回来了。

Android Studio中R文件丢失的解决办法_第3张图片


那现在至少确定肯定是 这一行代码出问题了:

android:layout_above="@id/text_p"


但我要布局总得使用layout_above属性啊,难道layout_above这条属性有BUG???正发愁的时候突然冒出个想法,因为 之前看Google的官方教程时清楚记得他们演示代码的时候引用的这一行也会在@后面添加一个加号(+)。但自己练习的时候确实在引用id的时候从没加过+号也没出过问题啊。于是开始测试,将引用id的代码也都加上+号:

android:layout_above="@+id/text_p"


再次测试,成功



大致想了一下,@+id/ 新建的ID需要记录到R文件中,或许是代码运行时需要重新写入,而新建的ID直接被其他View调用时出现了一些问题,具体内部原理现在还不清楚,待到之后慢慢学的多了弄懂原理了再来更新这篇文章。


至此,消耗将近两个小时,终于解决了这个问题,记录下来,希望也能帮到有需要的朋友,虽然可能在大神眼里这都是一些脑残的BUG,但小白们通过自己的努力成功解决问题还是很容易骄傲的!!!大笑 加油!


你可能感兴趣的:(android,r,rebuild,project,Studio)