今天在寫Android代碼的過程中,編譯器一直報錯,錯誤出在這一行代碼:
<span class="pln" style="margin: 0px; padding: 0px;">setContentView</span><span class="pun" style="margin: 0px; padding: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="margin: 0px; padding: 0px;">R</span><span class="pun" style="margin: 0px; padding: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="margin: 0px; padding: 0px;">layout</span><span class="pun" style="margin: 0px; padding: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="margin: 0px; padding: 0px;">activity_main</span><span class="pun" style="margin: 0px; padding: 0px; color: rgb(102, 102, 0);">)</span>
提示信息是:
activity_main cannot be resolved or is not a field
我就覺得很奇怪,我在R.layout裏面明明看到自動生成了默認的佈局activity_main,爲什麼在這裏引用就出錯呢。Google之也沒發現原因,而且,如果刪掉activity_main,Eclipse給出的自動提示是activity_list_item.我當時就覺得可能是導入的某個包覆蓋了我真正要引用的R.java.
然後在import裏面果然找到了這麼一句:
<span class="kwd" style="margin: 0px; padding: 0px; color: rgb(0, 0, 136);">import</span><span class="pln" style="margin: 0px; padding: 0px;"> android</span><span class="pun" style="margin: 0px; padding: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="margin: 0px; padding: 0px;">R</span><span class="pun" style="margin: 0px; padding: 0px; color: rgb(102, 102, 0);">;</span>
刪掉這一句就正常了。
出現這個問題的原因是,如果你在R.java還沒有來得及自動生成的時候選擇了fix imports,那麼Eclipse就會自動幫你導入android.R這個包,就會覆蓋掉本地的R.java,所以就導致了你不能正常引用R.layout.activity_main.