【问题标题】:R cannot be resolved to a variable - Hello WorldR 无法解析为变量 - Hello World
【发布时间】:2011-12-14 02:26:55
【问题描述】:

我知道很多人都遇到过这个问题,并且我搜索过 Google/Stack Overflow,但不知何故我仍然无法弄清楚我做错了什么。

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>

【问题讨论】:

  • 也许这会有所帮助? stackoverflow.com/questions/885009/…
  • 根据错误,您的清单格式不正确/已损坏。这阻止了 R 类的生成,最终导致 R 无法解决的错误。请发布您的 AndroidManifest.xml,以便我们检查其中有什么问题。

标签: java android import


【解决方案1】:

在你的清单中看到这一行(在&lt;manifest /&gt;标签的开头)

package="HelloWorld Mylove"

这不是一个有效的包名,必须更改。通常包名由小写单词组成,用点分隔,例如:

com.hello.world

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

由于这总体上有点工作,因为您必须在不同的地方更改它¹ (有时由于某种原因对我来说失败了),我建议通过创建一个新项目Eclipse 中的新 android 项目向导。这将在第 4 步中要求您提供包名称。确保遵循上述命名约定。您最终应该得到几乎相同的代码。或者,您可以尝试在项目资源管理器中右键单击您的项目并选择Android Tools -&gt; Rename Application Package

¹ 清单本身、存储 *.java 文件的文件夹、源文件中的 package 语句

【讨论】:

  • 是的,我在这个网站上找到了很多关于此类问题的回复,但只有这对我有帮助,我不知道为什么其他人有这么多的赞。谢谢!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多