R cannot be resolved to a variable 的解决办法

在MyEclipse下新建项目test6,一步步按部就班创建完成,结果竟然是不能运行。


报了两个错误:

  1.  一个在MainActivity.java中,R cannot be resolved to a variable
  2. 另一个在AndroidManifest.xml中,The markup in the document following the root element must be well-formed.


第一个问题,Google搜索到了 这个,还有这个

发现我的R.java也没有自动生成,但是第一个帖子没帮助,第二个帖子提到了要检查AndroidManifest.xml文件。

于是,注意到我的AndroidManifest.xml文件是这样的,虽然它是自动生成的,啥也没改过,但是显然它是错误的,多了一行:</manifest>,删除之。

[html]  view plain  copy
  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  2. ...  
  3.   
  4. </manifest>  
  5. </manifest>  

那么现在AndroidManifest.xml不再报错了,但是MainActivity.java中的错误依旧。

看了一下,R.java还是没生成,于是Google再搜索怎么手动生成R.java,于是看到了 这个帖子,最重要的两点如下:

  1. 选择菜单Project 勾选上 Bulid Automatically(自动构建部署) 。
  2. 选择菜单Project 点Clean后会重新构建项目,R.java文件在这个时候会重新更新生成一边,如果工程有错,就不会自动生成。 


试了一下,还是不行,报错如下:

[plain]  view plain  copy
  1. [2012-10-26 23:49:42 - test6] W/ResourceType( 6764): Bad XML block: header size 28530 or total size 1815766121 is larger than data size 0  
  2. [2012-10-26 23:49:42 - test6] D:\Dropbox\VMware_share\workspace\test6\res\values\strings.xml:8: error: Error parsing XML: junk after document element  
  3. [2012-10-26 23:49:42 - test6] D:\Dropbox\VMware_share\workspace\test6\res\layout\activity_main.xml:6: error: Error: No resource found that matches the given name (at 'text' with value '@string/hello_world').  
  4. [2012-10-26 23:49:42 - test6] D:\Dropbox\VMware_share\workspace\test6\res\menu\activity_main.xml:2: error: Error: No resource found that matches the given name (at 'title' with value '@string/menu_settings').  
  5. [2012-10-26 23:50:47 - test6] W/ResourceType( 4752): Bad XML block: header size 28530 or total size 1815766121 is larger than data size 0  
  6. [2012-10-26 23:50:47 - test6] D:\Dropbox\VMware_share\workspace\test6\res\values\strings.xml:8: error: Error parsing XML: junk after document element  
  7. [2012-10-26 23:50:47 - test6] D:\Dropbox\VMware_share\workspace\test6\res\layout\activity_main.xml:6: error: Error: No resource found that matches the given name (at 'text' with value '@string/hello_world').  
  8. [2012-10-26 23:50:47 - test6] D:\Dropbox\VMware_share\workspace\test6\res\menu\activity_main.xml:2: error: Error: No resource found that matches the given name (at 'title' with value '@string/menu_settings').  
  9. [2012-10-26 23:53:43 - test6] W/ResourceType( 6328): Bad XML block: header size 28530 or total size 1815766121 is larger than data size 0  
  10. [2012-10-26 23:53:43 - test6] D:\Dropbox\VMware_share\workspace\test6\res\values\strings.xml:8: error: Error parsing XML: junk after document element  
  11. [2012-10-26 23:53:43 - test6] D:\Dropbox\VMware_share\workspace\test6\res\layout\activity_main.xml:6: error: Error: No resource found that matches the given name (at 'text' with value '@string/hello_world').  
  12. [2012-10-26 23:53:43 - test6] D:\Dropbox\VMware_share\workspace\test6\res\menu\activity_main.xml:2: error: Error: No resource found that matches the given name (at 'title' with value '@string/menu_settings').  

好多错啊,注意到strings.xml的第8行有错,看了一眼,还真是,多了一个箭头符号 ">"

[html]  view plain  copy
  1. <resources>  
  2.   
  3.     <string name="app_name">test6</string>  
  4.     <string name="hello_world">Hello world!</string>  
  5.     <string name="menu_settings">Settings</string>  
  6.     <string name="title_activity_main">MainActivity</string>  
  7.   
  8. </resources>>  

去掉之,再试手动生成R.java,这次成功了!


注意:


手动生成R.java时,焦点应该选择在项目名字上,我的是"test6"。

我开始将焦点选择在strings.xml文件上,然后试图手动生成R.java,结果却是自动生成了strings.out.xml文件??

这个帖子 给出了解释和解决办法,基本上,下面的引文是关键:


引用 2 楼 bjtusq 的回复:

你在编辑xml文件的时候点运行,运行的是xml文件,所以生成xml out
你可以点击run右面的下拉箭头选择你想运行的程序,这样就不会错了


++

在Eclipse中,选中你要运行的项目(而不是项目中的某个文件),点击鼠标右键 -> Run as -> Android Application


最后想说的是,MyEclipse自动生成的项目代码也有问题?!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值