无法解析符号'R'

时间:2014-02-18 15:10:49

标签: java android r.java-file

使用“R”设置布局,图像等时遇到问题。以下是给出此错误的代码。

但是如果我选择“compile with:”作为“API 19”,那么相同的代码工作正常。我希望我的代码能够在我的手机上运行,​​即2.3.3。

我在google上搜索过我发现很多人都有这个问题。但没有解决方案适合我

package com.example.testfor23;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;

public class MainActivity extends ActionBarActivity {

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

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
    }
}

以下是清单文件

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

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name="com.example.testfor231.MainActivity"
            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>

如果我选择“compileSdkVersion 19”,那么它的效果非常好。

android {
    compileSdkVersion 10
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 9
    }

3 个答案:

答案 0 :(得分:0)

您的项目中有一些资源与2.3.3不兼容。修复它们就可以了。

答案 1 :(得分:0)

您需要添加

import com.example.testfor23.R;

为了修复Java文件中的R错误。如果仍然收到错误,那么您的一个XML文件包含错误,您将不得不找出错误。清理项目也许有帮助。另请注意,您需要在project.properties中正确设置目标。在你的情况下,它应该是:

target=android-19

通常,支持旧版Android会出现问题,因为它们不包含新版本的许多方法,类和功能。对于低于API 10的版本,这尤其明显。

如果您绝对必须支持这些旧版本,则可以使用Support Libraries

正如您所看到的here,目前只有1.3%的设备运行的版本早于API10(Gingerbread 2.3.3)。因此,我强烈建议你设置:

android:minSdkVersion="10"

因为支持这些设备的额外好处远大于它造成的问题。

答案 2 :(得分:0)

有时会发生这种情况,因为您的xml可能有错误,并且可能是sintax错误,不兼容的资源尝试在res目录中没有重复项。同时从项目中导入R,有时会因为你没有导入(在这种情况下)

而发生错误
import com.example.testfor23.R;

因为如果你不导入它,你就是从平台引用资源。