R.layout.main无法解析为变量

时间:2012-09-17 18:45:17

标签: android

我从Raghav Sood的Pro Android增强现实书中找到了这个代码。我试图执行代码,因为它写在书中,但我面临着很多困难。我已经尝试过清理和建设项目。将复选框勾选到项目的属性对话框中。选中导入Android.R存在于我的代码中。即使我卸载了我的AndroidSDK并使用不同的Android版本和API重新安装它。卸载并重新安装Eclipse。

这是我的ProAndroidAR3Activity.java文件

    package com.paar.ch3widgetoverlay;

    import android.app.Activity;
    import android.hardware.Camera;
    import android.hardware.Sensor;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.SurfaceHolder;
    import android.view.SurfaceView;
    import android.widget.TextView;

    public class ProAndroidAR3Activity extends Activity{
SurfaceView cameraPreview;
SurfaceHolder previewHolder;
Camera camera;
boolean inPreview;

final static String TAG = "PAAR";   
SensorManager sensorManager;

int orientationSensor;
float headingAngle;
float pitchAngle;
float rollAngle;

int accelerometerSensor;
float xAxis;
float yAxis;
float zAxis;

LocationManager locationManager;
double latitude;
double longitude;
double altitude;

TextView xAxisValue;
TextView yAxisValue;
TextView zAxisValue;
TextView headingValue;
TextView pitchValue;
TextView rollValue;
TextView altitudeValue;
TextView latitudeValue;
TextView longitudeValue;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); //here is the problem. every part of the code with       R. is having problem


    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 2, locationListener);

    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    orientationSensor = Sensor.TYPE_ORIENTATION;
    accelerometerSensor = Sensor.TYPE_ACCELEROMETER;
    sensorManager.registerListener(sensorEventListener, sensorManager.getDefaultSensor(orientationSensor), SensorManager.SENSOR_DELAY_NORMAL);
    sensorManager.registerListener(sensorEventListener, sensorManager.getDefaultSensor(accelerometerSensor), SensorManager.SENSOR_DELAY_NORMAL);

    inPreview = false;

    cameraPreview = (SurfaceView)findViewById(R.id.cameraPreview);
    previewHolder = cameraPreview.getHolder();
    previewHolder.addCallback(surfaceCallback);
    previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

    xAxisValue = (TextView) findViewById(R.id.xAxisValue);
    yAxisValue = (TextView) findViewById(R.id.yAxisValue);
    zAxisValue = (TextView) findViewById(R.id.zAxisValue);
    headingValue = (TextView) findViewById(R.id.headingValue);
    pitchValue = (TextView) findViewById(R.id.pitchValue);
    rollValue = (TextView) findViewById(R.id.rollValue);
    altitudeValue = (TextView) findViewById(R.id.altitudeValue);
    longitudeValue = (TextView) findViewById(R.id.longitudeValue);
    latitudeValue = (TextView) findViewById(R.id.latitudeValue);

这是我项目的AndroidManifest.xml文件:

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

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

    <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:label="@string/app_name"
        android:name=".ProAndroidAR3Activity" 
        android:screenOrientation = "landscape"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:configChanges = "keyboardHidden|orientation">
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    </application>
    <uses-feature android:name="android.hardware.camera" />  
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    </manifest>

以下是res / layout / main.xml文件

    <RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<SurfaceView
    android:id="@+id/cameraPreview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

<TextView
    android:id="@+id/xAxisLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="18dp"
    android:layout_marginTop="15dp"
    android:text="@string/xAxis" />

<TextView
    android:id="@+id/yAxisLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/xAxisLabel"
    android:layout_below="@+id/xAxisLabel"
    android:text="@string/yAxis" />

<TextView
    android:id="@+id/zAxisLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/yAxisLabel"
    android:layout_below="@+id/yAxisLabel"
    android:text="@string/zAxis" />

<TextView
    android:id="@+id/headingLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/zAxisLabel"
    android:layout_below="@+id/zAxisLabel"
    android:layout_marginTop="19dp"
    android:text="@string/heading" />

<TextView
    android:id="@+id/pitchLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/headingLabel"
    android:layout_below="@+id/headingLabel"
    android:text="@string/pitch" />

<TextView
    android:id="@+id/rollLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/pitchLabel"
    android:layout_below="@+id/pitchLabel"
    android:text="@string/roll" />

<TextView
    android:id="@+id/latitudeLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/rollLabel"
    android:layout_below="@+id/rollLabel"
    android:layout_marginTop="34dp"
    android:text="@string/latitude" />

<TextView
    android:id="@+id/longitudeLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/latitudeLabel"
    android:layout_below="@+id/latitudeLabel"
    android:text="@string/longitude" />

<TextView
    android:id="@+id/altitudeLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/longitudeLabel"
    android:layout_below="@+id/longitudeLabel"
    android:text="@string/altitude" />

<TextView
    android:id="@+id/xAxisValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/xAxisLabel"
    android:layout_marginLeft="56dp"
    android:layout_toRightOf="@+id/longitudeLabel"
    android:text="@string/empty" />

<TextView
    android:id="@+id/yAxisValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/yAxisLabel"
    android:layout_alignBottom="@+id/yAxisLabel"
    android:layout_alignLeft="@+id/xAxisValue"
    android:text="@string/empty" />

<TextView
    android:id="@+id/zAxisValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/headingLabel"
    android:layout_alignLeft="@+id/yAxisValue"
    android:text="@string/empty" />

<TextView
    android:id="@+id/headingValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/headingLabel"
    android:layout_alignBottom="@+id/headingLabel"
    android:layout_alignLeft="@+id/zAxisValue"
    android:text="@string/empty" />

<TextView
    android:id="@+id/pitchValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/pitchLabel"
    android:layout_alignBottom="@+id/pitchLabel"
    android:layout_alignLeft="@+id/headingValue"
    android:text="@string/empty" />

<TextView
    android:id="@+id/rollValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/latitudeLabel"
    android:layout_alignLeft="@+id/pitchValue"
    android:text="@string/empty" />

<TextView
    android:id="@+id/latitudeValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/latitudeLabel"
    android:layout_alignLeft="@+id/rollValue"
    android:text="@string/empty" />

<TextView
    android:id="@+id/longitudeValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/longitudeLabel"
    android:layout_alignBottom="@+id/longitudeLabel"
    android:layout_alignLeft="@+id/latitudeValue"
    android:text="@string/empty" />

<TextView
    android:id="@+id/altitudeValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/altitudeLabel"
    android:layout_alignBottom="@+id/altitudeLabel"
    android:layout_alignLeft="@+id/longitudeValue"
    android:text="@string/empty" />

    </RelativeLayout>`

以下是res / values / strings.xml文件

    <?xml version="1.0" encoding="utf-8"?>
    <resources>

    <string name="hello">Hello World, ProAndroidAR3Activity!</string>
    <string name="app_name">Pro Android AR 3 Widget Overlay</string>
    <string name="xAxis">X Axis:</string>
    <string name="yAxis">Y Axis:</string>
<string name="zAxis">Z Axis:</string>
<string name="heading">Heading:</string>
<string name="pitch">Pitch:</string>
<string name="roll">Roll:</string>
<string name="altitude">Altitude:</string>
<string name="longitude">Longitude:</string>
<string name="latitude">Latitude:</string>
<string name="empty"></string>
    </resources>

我已将minsdk版本设置为2.1,即API 7,编译SDK版本为4.1,即API 16 ......

请帮帮我......

4 个答案:

答案 0 :(得分:1)

你是否在Eclipse的“gen”文件夹下有正确生成的新的R.java类(/gen/[yourpackage]/R.java)? 如果它与您的活动位于同一个包中,则无需手动导入!

如果XML正确的话应该存在!如果XML中存在语法错误,那么Eclipse将不会生成R.java。

Besieds,你的布局文件末尾有一个奇怪的'''字符,我不知道你的帖子中是否有意外,但这可能是一个问题:

</RelativeLayout>`

我希望它有所帮助!

答案 1 :(得分:1)

(扩展到user1649030的帖子,因为这太大而无法发表评论:)

好的,“找不到R”错误通常有两个原因。一个是你的任何xml文件中的错误导致R.java根本不构建。在你的'gen'目录下查看R.java。如果没有找到,那那就是你的问题。查找错误的xml文件。

如果正在构建R.java ,请记下它的目录路径。这将与清单中指定的包名称匹配。在你的情况下,它将是gen / com / paar / ch3widgetoverlay / R.java。

此类由src / com / paar / ch3widgetoverlay /

中的所有源文件隐式导入

任何其他目录中需要访问R的任何源文件都需要显式导入com.paar.ch3widgetoverlay.R

这几乎应该涵盖它。

答案 2 :(得分:0)

您需要从java导入您的 R类,而不是Android。如果导入android.R则会导致冲突。 R类是生成的,可能与ch3widgetoverlay在同一个包中,也可能不在同一个包中,特别是如果你从教程中获得了代码。查看eclipse中的gen文件夹,找出R类所在的包。

答案 3 :(得分:0)

尝试导入com.paar.ch3widgetoverlay.R