R无法parsing为variables

我想解决这个错误

R无法parsing为variables

我查了许多答案,但是我找不到合适的答案。 我尝试了一切。 有人能帮我吗?

我的主要活动是自动创build的。 从case R.id.button1:开始的三行显示错误::

 package de.vogella.android.temprature1; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.RadioButton; import android.widget.Toast; public class Convert extends Activity { private EditText text; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); text = (EditText) findViewById(R.id.editText1); } // This method is called at button click because we assigned the name to the // "On Click property" of the button public void myClickHandler(View view) { switch (view.getId()) { case R.id.button1: RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0); RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1); if (text.getText().length() == 0) { Toast.makeText(this, "Please enter a valid number", Toast.LENGTH_LONG).show(); return; } float inputValue = Float.parseFloat(text.getText().toString()); if (celsiusButton.isChecked()) { text.setText(String.valueOf(convertFahrenheitToCelsius(inputValue))); } else { text.setText(String.valueOf(convertCelsiusToFahrenheit(inputValue))); } // Switch to the other button if (fahrenheitButton.isChecked()) { fahrenheitButton.setChecked(false); celsiusButton.setChecked(true); } else { fahrenheitButton.setChecked(true); celsiusButton.setChecked(false); } break; } } // Converts to celsius private float convertFahrenheitToCelsius(float fahrenheit) { return ((fahrenheit - 32) * 5 / 9); } // Converts to fahrenheit private float convertCelsiusToFahrenheit(float celsius) { return ((celsius * 9) / 5) + 32; } } 

我的main.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/myColor"> <EditText android:layout_height="wrap_content" android:id="@+id/editText1" android:layout_width="match_parent" android:inputType="numberDecimal|numberSigned"></EditText> <RadioGroup android:layout_height="wrap_content" android:id="@+id/radioGroup1" android:layout_width="match_parent"> <RadioButton android:layout_width="wrap_content" android:id="@+id/radio0" android:layout_height="wrap_content" android:text="@string/celsius" android:checked="true"></RadioButton> <RadioButton android:layout_width="wrap_content" android:id="@+id/radio1" android:layout_height="wrap_content" android:text="@string/fahrenheit"></RadioButton> </RadioGroup> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/calc" android:onClick="myClickHandler"></Button> </LinearLayout> 

我的string.xml

 <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, Convert!</string> <string name="app_name">de.vogella.android.temprature1</string> <string name="myClickHandler">myClickHandler</string> <string name="celsius">to Celsius</string> <string name="farenheit">to Farenheit</string> <string name="calc">Calculate</string> </resources> 

Solutions Collecting From Web of "R无法parsing为variables"

1)查看包资源pipe理器树中的xml文件是否有错误图标,如果有错误,修复错误并生成R类。

示例提示:FILL_PARENT在API级别8中被重命名为MATCH_PARENT; 所以如果你的目标是平台2.1(api 7),把所有的出现改回“fill_parent”

2)如果你添加了“import android.R” 试图做一个快速修复,删除该行

对我来说,向“R”文件存在问题的人build议的最佳解决scheme是尝试下一步(顺序无关紧要):

  1. 更新ADT&SDK,Eclipse和Java(包括1.6和最新版本)。

    编辑:现在ADT支持Java 1.7。 链接在这里

  2. 删除gen文件夹,并再次创build它。

  3. 做一个干净的项目。

  4. 右键单击该项目并selectandroid-tools – > fix-project-properties。

  5. 右键单击该项目,然后select属性 – > java-build-path – > order-and-export。 确保订单是:

    • Android 4.4(总是最新版本)

    • Android私人图书馆

    • android依赖关系

    • 你的图书馆项目/如果需要的话

    • yourAppProject / GEN

    • yourAppProject / src目录

  6. 确保res文件夹的子文件夹中的所有文件都具有正确的名称:只有小写字母,数字和下划线(“_”)。

  7. 始终确保targetSdk指向最新的API(当前为19),并将其设置在project.properties文件中

  8. 尝试运行Lint并阅读其警告。 他们可能会帮助你。

  9. 确保你的项目编译在1.6的Java而不是一个不同的版本。

  10. 重启eclipse。

检查你的AndroidManifest.xml文件,看看包名是否正确。 如果你复制了一个例子,这很可能是错误的,也是你的问题的根源。

我有同样的问题。 我没有任何一行说“import something.R”。 清洁和重build也没有解决这个问题。

原来是因为一个布局xml文件的名字。 这些文件只能包含小写字母,数字或下划线。 当我将文件名(以及引用它的所有文件)从myLayout.xml更改为my_layout.xml时,一切正常。

在你尝试别的之前,请检查你的AndroidManifest.xml文件中的包声明是否与项目的src文件夹中的实际包名匹配! 当我创build从现有项目复制的testing项目时,这已经导致了这个错误很多次。 希望这可以节省你的时间!

另外,用任何大写字母创buildXML文件都会触发这个错误。

我刚刚有这个问题。

这是因为我有一个冗余的菜单资源引用了一个不存在的string。

删除了菜单XML并返回R.

  1. 检查res文件夹中的文件是否有错误
  2. 右键点击项目 – > Android工具 – >修复项目属性
  3. 项目清洁

检查AndroidManifest.xml文件中的软件包名称是否与您的java类的软件包名称相同。

例如。 AndroidManifest.xml中

  package="com.example.de.vogella.android.widget.example" 

在你的类MyWidgetProvider.java

 package com.example.de.vogella.android.widget.example; 

这是这个例子中我错误的原因。

如果R丢失

  • find你的R.java文件,它应该在文件夹中./gen/
  • 如果缺less,“构build项目”不构build它,你的XML文件之一有错误,修复它们,甚至删除它们,然后右键单击您的项目,然后单击生成项目
  • 应该生成R.java文件

我有这个问题,事实certificate,这是由于我刚刚更改我的布局XML文件中的一个错误

如果Clean / Rebuild Project不起作用,请尝试在AndroidManifest.xml中检查我们的软件包名称。

当您在AndroidManifest.xml文件中更改包名时会发生“R无法解决”的问题。 它使用你的Android程序包名称在“gen”目录下创build一个存储R.java文件的子目录。

只要看看你的头文件就会有:

 import somefile.R; 

只要删除该行,就是这样。

此错误是因为从项目/gen文件夹中删除R.java文件。 如果您有项目的备份,请转至项目目录并粘贴您从备份部分复制的R.java文件。

Corrupt R.java文件也可能由XML中的错误引起。 通常这些types的错误不会在eclipse中显示出来,所以我build议看看你的XML文件。 之后,您还可以尝试通过转到菜单栏中的Project -> Clean...Clean项目。

上面没有提到为我工作。 不过,我自己解决了。

解:

如果除了app_name/res/layout中的activity_main.xml / main.xml以外的任何其他文件,请将其删除并尝试清理并构build。

注意:

app_name/res/layout的不需要的文件或(稍后使用的)文件将是*.out.xml 。 删除一样。

所有上述build议应该正常工作,如果你仍然面临的问题,我怀疑你正在使用64位操作系统和ADT正在寻找32位二进制文​​件

尝试在terminal执行下面的命令并清理一次项目

 sudo apt-get install ia32-libs 

我刚刚在我的第一个hello world android应用程序(2013年11月3日)有这个错误。

除了其他用户的一些提示之外,这也是我不得不做的:

控制+ SHIFT + O

从主活动.java文件的顶部删除导入* .R

保存文件,清理并编译项目(通常是自动生成)

运行SDKpipe理器,如果尚未检查,则启用构build工具,然后单击“更新”

closures并重新打开Eclipse,问题就没有了

  • 重build
  • 清洁(菜单 – >项目 – >清洁)
  • 删除您的导入de.vogella.android.temprature1.R;

如果您还没有,请尝试按照您的build议清理您的项目。 在Eclipse Indigo中,这是项目 – >清理… – >(确保您的项目被选中) – >确定。 之后,右键单击您的项目并select“刷新”。

如果这仍然是一个问题,几个问题:

  1. 您最近在AndroidManifest.xml中更改了应用程序的包名吗?
  2. 描述类“Convert”的AndroidManifest.xml中的“activity”节点是否指定了一个无法用您的应用程序自然解决的包/名称? 举一个例子,如果你的应用程序是com.foo.bar,而你的活动被描述为com.foobar.Convert,R. *不会自动地起作用 – 你需要明确地包含R以获得正确的包。

提示:一次更新SDK和所有其他实用程序。 这对我有帮助。

Sooo许多不同的可能解决scheme! 对于我来说,我发现Eclipse在错误的包中创build了错误的文件。 我通过将它移动到与R.java文件相同的包中来修复它。

我已经看到很多答案,build议“修复XML文件中的错误”,但只提供关于如何修复XML的一般提示和技巧。

以下是查找XML错误的系统方法:

看看Eclipse中的“问题”标签。 忽略所有“R无法parsing为variables”。 看看还有什么 对我来说,看起来像这样:

 Unparsed aapt error(s)! Check the console for output. 

我引用http://developer.android.com/tools/building/index.html#detailed-build

Android资源打包工具(aapt)会将您的应用程序资源文件(如AndroidManifest.xml文件和XML文件)用于您的活动,并对其进行编译。 R.java也被生成,所以你可以从Java代码中引用你的资源。

现在,打开“控制台”选项卡。 窗口 – >显示视图>控制台

这应该告诉你确切的错误,在哪个文件中出现,以及在哪个行号:

 [2014-05-13 08:27:05 - MyFirstApp] /Users/alain/code/experimental/android/adt_workspace4.4/MyFirstApp/res/menu/main_activity_actions.xml:4: error: Error: No resource found that matches the given name (at 'icon' with value '@drawable/ic_action_search'). [2014-05-13 08:27:05 - MyFirstApp] /Users/alain/code/experimental/android/adt_workspace4.4/MyFirstApp/res/menu/main_activity_actions.xml:4: error: Error: No resource found that matches the given name (at 'title' with value '@string/action_search'). 

在我的情况下,第一个错误是因为我引用ic_action_search,但我还没有把我的res / drawable- * dpi目录中的ic_action_search.png。 第二个错误是因为我引用了一个string“action_search”,但是我还没有在res / values / strings.xml中定义它

如果在控制台输出中单击错误,ADT插件实际上会将您带到错误所在的行和文件,但现在您必须手动执行此操作。

Eclipse的问题在于,当aapt失败时不会停止构build,而是继续构build的下一个阶段,即Java编译器。 命令行工具没有这个问题:

要生成build.xml:

 $ android list targets 

对我来说,我有:

可用的Android目标:
 ----------
 ID:1或“android-16”
     名称:Android 4.1.2
     types:平台
      API级别:16
     修订:4
     皮肤:HVGA,QVGA,WQVGA400,WQVGA432,WSVGA,WVGA800(默认),WVGA854,WXGA720,WXGA800,WXGA800-7in
 标记/ ABI:默认/ armeabi-v7a,默认/ mips,默认/ x86
 ----------
 ID:2或“android-19”
     名称:Android 4.4.2
     types:平台
      API级别:19
     修订:3
     皮肤:HVGA,QVGA,WQVGA400,WQVGA432,WSVGA,WVGA800(默认),WVGA854,WXGA720,WXGA800,WXGA800-7in
  Tag / ABIs:default / armeabi-v7a

从上面的列表中select您的目标,并在下一个命令中使用它:

 $ android update project --target <your_target_id> --path /path/to/android/project 

现在生成了build.xml,您可以使用以下其中一个来构build您的项目:

 $ ant debug $ ant -verbose debug $ ant -debug debug 

如果构build在aapt阶段失败,那么它不会正确生成R.java,而且它也不会继续到Java Compiler阶段。 控制台输出将显示您(就像在Eclipse Console视图中一样)XML错误所在的文件名和行号。

这里是如何打开Eclipse中的行号:

http://www.mkyong.com/eclipse/how-to-display-line-numbers-in-eclipse/

 Preferences -> General -> Editors -> Text Editors -> [x] Show line numbers 

简单scheme:

检查是否在gen [生成的Java文件],在你的项目包下,有一个R.java文件。

如果不,

  1. 在您添加或修改的xml文件中有一些错误。 深入检查。 修复所有的黄色棉花,并通过错误日志和控制台
  2. 检查你的XML文件应该是小写字母,'_'和数字。
  3. 检查你添加的图像名称也应该是小写字母,'_'和数字。
  4. 清理项目。
  5. 检查R.java创build。 如果是的话,仍然发生错误,请按照下面的是的说明,否则再次检查xmls

如是,

  1. 用你的项目package.R例如:'com.mysmallapp.main.R'replace'import android.R'。
  2. 清理项目

我有同样的问题和主要原因,R.java没有重新生成是项目中的任何文件中的错误。 一旦我们修复那些R.java应该生成。

我有同样的问题。 我通过删除“gen”目录中的文件来修复它,然后清理项目,R.java自动生成。

我是新的android开发。 我有同样的问题,围绕这个线程大约一个星期。 事实certificate,当你下载最近发布的API 23等最新的Android SDK,或者如果你更新构build工具,你需要修改Gradle脚本下的build.gradle文件,如果它没有得到更新。 它位于项目目录的应用程序文件夹中。 你可以用记事本打开这个文件。 我的文件现在看起来像这样。

  apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.0" defaultConfig { applicationId "com.example.sukhwinder.justjava" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile 'com.android.support:appcompat-v7:23.+' compile fileTree(dir: 'libs', include: ['*.jar']) } 

确保compileSdkVersionbuildToolsVersiontargetSdkVersion与您机器上安装的最新版本的Android SDK和Build Tools 匹配。

我住了两个星期的这个问题,今天我发现解决scheme是“icrease( 最低SDK要求 )尽可能最大”

我在FlashBuilder 4.7中执行我的项目,并在strings.xml中为一行进行整理:

<string name =“action_settings”>设置</ string>

一旦我删除它,我得到了同样的错误。 当它返回到位时,所有东西都再次工作。

对我来说是什么

当我检查我的项目属性文件( /project_root/project.properties ),它有一个旧的Android版本的目标,我不再安装

 # Project target. target=android-15 

只要我改变这个说17,它的工作很完美,一旦文件被保存我的文件夹被build立和充气。

 # Project target. target=android-17 
 import com.de.vogella.android.temprature1.R;