Android教程错误:R无法解析为变量

时间:2012-06-29 02:15:08

标签: android

http://developer.android.com/training/basics/firstapp/building-ui.html

我一直在关注本教程,但我有两个错误,“R无法解析为变量”。我以前制作了android应用程序(简单的应用程序),我记得这个问题是通过检查我是否有导入R语句(我没有)以及项目是否在构建之前已经清理来修复的再次(我清理它,我仍然得到错误)。我不知道该怎么做。谢谢!

*我还想提一下我确实看到170个匹配的相同标题的线程,并且“删除导入R语句”的解决方案不适用于我的问题(我不认为) 再次感谢

所有代码都是直接来自上面的链接,但这里是为了方便

activity_my_first.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">
    <EditText android:id="@+id/edit_message"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" />
</LinearLayout>

MyFirstActivity.java

package com.example.myfirstapp;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;

public class MyFirstActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_first);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_my_first, menu);
        return true;
    }


}

的strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">My First App</string>
    <string name="edit_message">Enter a message</string>
    <string name="button_send">Send</string>
    <string name="menu_settings">Menu Settings</string>
</resources>

编辑:当我清理项目时,我在控制台中收到此消息:

  

[2012-06-29 11:12:38 - MyFirstApp] W / ResourceType(6140):错误的XML   块:标头大小91或总大小0大于数据大小0   [2012-06-29 11:12:38 - MyFirstApp]   C:\ Users \用户忠\工作空间\蚀\ MyFirstApp \ RES \菜单\ activity_my_first.xml:2:   错误:错误:找不到与给定名称匹配的资源(at   'title'的值为'@ string / menu_settings')。

编辑:在布局xml文件<string name="menu_settings">Menu Settings</string>中添加了一行 修复了清理项目错误,但我仍然无法从两个R错误中运行项目。

12 个答案:

答案 0 :(得分:7)

我正在通过相同的例子,并且有相同(或非常相似)的问题。

最后我注意到manifest.xml上有一个小小的红色x。 果然,它抱怨这个:

android:label="@string/title_activity_hello_world" >

所以我补充道:

<string name="title_activity_hello_world">Hello World</string>

到strings.xml,现在可以了。

答案 1 :(得分:3)

在学习本教程时遇到了同样的问题。 清洁项目或清理进口并没有解决问题。

问题是如何(简单地)解决的:我退出Eclipse并重新启动它。

答案 2 :(得分:1)

2件可能的事情

Android Manifest中指定的包名称与Java文件中的包名称不同。

或者,您的IDE尚未在gen /文件夹中生成R.java文件。尝试再次构建(尽管有错误)并且通常会将其清除。

基本上,R.java文件是为您和同一个包生成的,因此您可以简单地将其称为R。

答案 3 :(得分:1)

我有android:text="@string/button_send"
这给出了错误:No resource found that matches the given name (at 'text' with value '@string/button_send').

我尝试使用tuturial解决错误。但教程没有告诉我逐一编写所有必需的行。所以我想念在strings.xml中写"<string name="button_send">Send</string>"

添加上一行后,错误消失!我认为这与此主题中的原始问题类似。

因此,如果我从给定的教程中复制了整行,那么可能没有发生,但通过输入我们自己,我认为这是最好的学习方式。

答案 4 :(得分:1)

我找到了解决方案:

转到project->res->menu而不是打开XML文件并删除此行:

android:title="@string/menu_settings"

我删除了它并且在问题部分中发出相同警告3小时后它开始工作。

当你阅读它时,“title的价值为@string/menu_settings

答案 5 :(得分:0)

请确认

中没有错误

1-项目文件夹 2-问题日食观 3-控制台 4-错误日志,如图像中所示 enter image description here

答案 6 :(得分:0)

你必须确保

  1. 清理项目项目 - &gt;清理
  2. / res目录不包含错误(某些文件将显示 在文件浏览器上有一个红色图标)
  3. 您的导入不包含此行import android.R;
  4. 检查在AndroidManifest.xml中,属性包是否有 正确的价值。 <manifestxmlns:android="http://schemas.android.com/apk/res/android" package="your.correct.package.name"

答案 7 :(得分:0)

这为我解决了这个问题: https://stackoverflow.com/a/3259974/1538785

似乎eclipse喜欢无缘无故地为java文件添加导入行。转到你的java文件,点击ctrl + shift + o,将出现所有import语句。删除说明import andriod.R

的行

答案 8 :(得分:0)

右键单击Project,选择“Android Tools”&gt; “添加支持库”&gt; “Android支持库,修订版11”&gt; “安装”

答案 9 :(得分:0)

在我的情况下,问题是我在64位Linux上,并且没有安装所需的32位库,这意味着构建工具无法生成R.java。

运行此命令,然后清理项目,解决了问题:

sudo apt-get install ia32-libs

答案 10 :(得分:0)

如果您在Linux机器上运行默认下载,请确保sdk / build-tools / android-xyz / *中的可执行文件(aapt等)是可执行的...

答案 11 :(得分:0)

尝试执行第一个教程时遇到了同样的错误。为了让应用程序运行,我编辑了MainActivity.java,看起来像这样

package com.example.myfirstapp;

import android.app.Activity; import android.os.Bundle;

公共类MainActivity扩展了Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

}

}