【问题标题】:Eclipse for android: Issues with REclipse for android:R 的问题
【发布时间】:2012-07-29 14:59:30
【问题描述】:

我正在尝试开发定位应用程序,目前正处于故障排除阶段。我已经解决了最后两个问题,它们都与 R. blah blah 有关。它说 main 要么不是字段,要么无法解析,并且消息相同,但使用 mapview 而不是 main。以下是我的导入和问题所在的代码行。

代码:

    setContentView(R.layout.main);
    mapview = (MapView)findViewById(R.id.mapview);

进口:

    import android.R;
    import android.R.layout;
    import android.R.id;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.widget.Toast;

    import com.google.android.maps.GeoPoint;
    import com.google.android.maps.MapActivity;
    import com.google.android.maps.MapController;
    import com.google.android.maps.MapView;

我什么都试过了。我知道人们一直说要取出 android.R,但这就是在 jar 文件中找到 R.layout 和 R.id 的地方。我已右键单击该文件夹并验证了代码。我已经去了 Project/Clean 并做到了。没有运气。请帮忙?这是我的第一篇文章,如果格式错误,我很抱歉。我提前感谢你给我的任何帮助。 这是我的 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"
        >
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Waiting for location..."
        android:id="@+id/lblLocationInfo"
    />
    <com.google.android.maps.MapView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/mapview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:apiKey="0vFrUOhHMkbahT9zXqiz_DuNVWfPqlEyqcO8ftg"
    />
    </LinearLayout>

【问题讨论】:

  • 你能发布你的 main.xml 吗?您是否也在您的清单应用程序标签中添加了这个:&lt;uses-library android:name="com.google.android.maps" /&gt;
  • 我有,我现在将添加 main.xml

标签: java android eclipse


【解决方案1】:

除非你使用来自 android 的资源,否则你不应该需要这些行

import android.R; 
import android.R.Id;
import android.R.layout;

删除这些行

R 正在解析为 androids R 而不是 com.yourpackage.yourproject.R

如果不需要,请删除导入。如果您需要在代码中明确说明。例如。

ImageView.setDrawable(android.R.ic_menu_search); //uses an android resource

findViewById(R.id.mapView); //uses your resource file

setContentView(R.layout.activity_main); // must have an activity_main.xml file in YourProject/res/layout

编辑:

更改以下代码:

//import android.R;
//import android.R.layout;    //comment or delete these lines
//import android.R.id;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;

setContentView(R.layout.activity_main);  //changed main to activity_main
mapview = (MapView)findViewById(R.id.mapview);

编辑 2

在 MainActivity.java 的最顶部应该有一行以 package 开头的那一行的其余部分是什么意思?

在您的 AndroidManifest.xml 中还有一个 package 的条目它说什么?

【讨论】:

  • 我是编程新手……这几乎没有任何意义。你能解释一下这是什么意思吗?
  • 没问题我更新了答案... Android 有它自己的资源。如果您从删除我建议的 3 行开始,然后进行清理并构建,然后看看会带来什么。
  • 嗯,有道理。我删除了这些行,但仍然有这两个错误。
  • 在你的项目中 res/layout 下有没有 main.xml 文件?
  • 是的。 activity_main.xml
【解决方案2】:

尝试删除该行:

import android.R;

然后进行 Build Clean,这样可以解决问题。

【讨论】:

    【解决方案3】:

    这也可能与您的项目设置有关。当我创建一个新项目时,我通常做的是设置“订购和导出”选项。这样您就不必导入任何 R.* 包。

    在 Eclipse 中,右键单击您的项目转到 Properties -&gt; Java Build Path -&gt; Order and Export。只需确保 yourprojectname/gen 文件夹高于 yourprojectname/src 文件夹即可。

    【讨论】:

    【解决方案4】:

    R.java 这是一个自生成文件,您需要重新构建它才能生成它,忽略警告并“构建干净”您的文件

    【讨论】:

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