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>
1)查看包资源pipe理器树中的xml文件是否有错误图标,如果有错误,修复错误并生成R类。
示例提示:FILL_PARENT在API级别8中被重命名为MATCH_PARENT; 所以如果你的目标是平台2.1(api 7),把所有的出现改回“fill_parent”
2)如果你添加了“import android.R” 试图做一个快速修复,删除该行
对我来说,向“R”文件存在问题的人build议的最佳解决scheme是尝试下一步(顺序无关紧要):
-
更新ADT&SDK,Eclipse和Java(包括1.6和最新版本)。
编辑:现在ADT支持Java 1.7。 链接在这里 。
-
删除gen文件夹,并再次创build它。
-
做一个干净的项目。
-
右键单击该项目并selectandroid-tools – > fix-project-properties。
-
右键单击该项目,然后select属性 – > java-build-path – > order-and-export。 确保订单是:
-
Android 4.4(总是最新版本)
-
Android私人图书馆
-
android依赖关系
-
你的图书馆项目/如果需要的话
-
yourAppProject / GEN
-
yourAppProject / src目录
-
-
确保res文件夹的子文件夹中的所有文件都具有正确的名称:只有小写字母,数字和下划线(“_”)。
-
始终确保targetSdk指向最新的API(当前为19),并将其设置在project.properties文件中
-
尝试运行Lint并阅读其警告。 他们可能会帮助你。
-
确保你的项目编译在1.6的Java而不是一个不同的版本。
-
重启eclipse。
检查你的AndroidManifest.xml文件,看看包名是否正确。 如果你复制了一个例子,这很可能是错误的,也是你的问题的根源。
我有同样的问题。 我没有任何一行说“import something.R”。 清洁和重build也没有解决这个问题。
原来是因为布局xml文件的名字。 这些文件只能包含小写字母,数字或下划线。 当我将文件名(以及引用它的所有文件)从myLayout.xml更改为my_layout.xml时,一切正常。
在你尝试别的之前,请检查你的AndroidManifest.xml
文件中的包声明是否与项目的src
文件夹中的实际包名相匹配! 当我创build从现有项目复制的testing项目时,这已经导致了这个错误很多次。 希望这可以节省你的时间!
另外,用任何大写字母创buildXML文件都会触发这个错误。
我刚刚有这个问题。
这是因为我有一个冗余的菜单资源引用了一个不存在的string。
删除了菜单XML并返回R.
- 检查res文件夹中的文件是否有错误
- 右键点击项目 – > Android工具 – >修复项目属性
- 项目清洁
检查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“刷新”。
如果这仍然是一个问题,几个问题:
- 您最近在AndroidManifest.xml中更改了应用程序的包名吗?
- 描述类“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文件。
如果不,
- 在您添加或修改的xml文件中有一些错误。 深入检查。 修复所有的黄色棉花,并通过错误日志和控制台
- 检查你的XML文件应该是小写字母,'_'和数字。
- 检查你添加的图像名称也应该是小写字母,'_'和数字。
- 清理项目。
- 检查R.java创build。 如果是的话,仍然发生错误,请按照下面的是的说明,否则再次检查xmls
如是,
- 用你的项目package.R例如:'com.mysmallapp.main.R'replace'import android.R'。
- 清理项目
我有同样的问题和主要原因,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']) }
确保compileSdkVersion , buildToolsVersion和targetSdkVersion与您机器上安装的最新版本的Android SDK和Build Tools 相匹配。
我住了两个星期的这个问题,今天我find的解决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;
- 如何从Android设备获取日志文件?
- 如何更改android应用程序中的背景颜色
- Android Raw文件夹 – 创build和参考
- Android 4.3蓝牙低功耗不稳定
- UnsatisfiedLinkError:dlopen失败:无法在API <20上find由“libsupportjni.so”引用的符号“strtof”
- 如何在由geo uri Intent发布的地图中显示标记?
- 如何停止在Android Studio中滚动logcat
- 当我将Firebase中的JSON转换为Java对象时,为什么会出现“无法popupinput”?
- Google Maps Android API v2 – 交互式InfoWindow(就像在原来的android谷歌地图)