2011-12-14 135 views
1

我知道很多人都遇到了这个问题,并且我搜索了Google/Stack Overflow,但我仍然无法弄清楚我做错了什么。R无法解析为变量 - Hello World

package HelloWorld; 
import android.app.Activity; 
import android.os.Bundle;  
import android.widget.TextView; 

public class HelloWorldActivity extends Activity { 
    /** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
// TextView tv = new TextView(this); 
// String hello = "Hello World!"; 
// tv.setText(hello); 
// setContentView(tv); 
} 
} 

我试图寻找不必要import android.R;声明,以及建筑/清洁/清爽/等,但我似乎无法推测出来。也许这是我安装我的SDK的方式的问题?我不认为这是事实,但我对此很陌生,所以很可能我在某个地方犯了个错误。

而且,我收到此错误:

[2011-12-13 18:18:46 - com.android.ide.eclipse.adt.internal.project.AndroidManifestHelper] Parser exception for C:\Users\MYNAME\Android Development\Hello World\Hello World\AndroidManifest.xml: The processing instruction target matching "[xX][mM][lL]" is not allowed.

谁能帮助我?谢谢!

编辑:我的XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="HelloWorld Mylove" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="10" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".HelloWorldActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 
+0

package声明也许这将帮助? http://stackoverflow.com/questions/885009/r-cannot-be-resolved-android-error – Naterade 2011-12-14 02:29:05

+0

根据错误,你的清单在某种程度上是畸形/损坏的。这会阻止R类的生成并最终导致R无法解析的错误。请发布您的AndroidManifest.xml文件,以便我们可以检查那里有什么错误。 – 2011-12-14 02:29:15

回答

4

看到这条线在您的清单(在<manifest />标签的开口)

package="HelloWorld Mylove" 

这不是一个有效的软件包名称,必须改变。通常一个包名称由出来的小写的话,用点分隔,例如:

com.hello.world 

Naming a Package。将其更改为有效的名称。

由于这是整体的一些工作,因为你必须改变它在各种places¹(有时失败,我出于某种原因),我建议刚通过创建新的Android项目向导创建新项目在日食。这将在步骤4中要求您输入软件包名称。确保遵循上述命名约定。你应该得到几乎相同的代码。或者,您可以尝试右键单击项目浏览器中的项目,然后选择Android Tools -> Rename Application Package

¹清单本身,你的* .java文件都存储在文件夹中,源文件

3

的错误消息The processing instruction target matching "[xX][mM][lL]" is not allowed.意味着你的XML声明(<?xml version="1.0" encoding="utf-8"?>)被误解为一个处理指令。这意味着您的XML声明不是您文件中的第一件事。请注意,它必须是您的文件—中的第一件事非常甚至任何空格都不允许在它之前。如果它已经是是文件中的第一件事,那么要尝试的一件事就是将其保存为ASCII/ANSI而不是UTF-8,以消除可能的BOM。 (现在大多数XML解析器都支持使用带有BOM的UTF-8,但最初XML规范不允许这样做,所以似乎可以设想这个解析器可能不满意它。)