在我引用的所有类中的每个实例中R.id.something,它R都是红色的,并且表示"无法解析符号R".此外,每次有R.layout.something红色下划线并说"无法解析方法setContentView(?)".该项目总是很好.一直看到这一点很烦人.我在这里已经阅读了许多关于类似的东西的其他问题,但大部分涉及从Eclipse导入项目.我正在使用我认为最新版本的Android Studio,该项目是使用Android Studio创建的,并且没有任何"无法解决R"问题.如果有人知道,我想知道是什么原因造成的.
我发现我的R.java永远不会更新,因此它不包含有关我的新资源的信息,所以我决定删除它并认为Eclipse会生成一个新资源.但这没有发生,我现在没有R.java.我怎样才能再生一个?
我正在使用Windows 7.
从其中一条评论:"做项目 - > 清理是导致问题的原因.清理删除R.java ......无论出于何种原因,插件都没有重新生成文件."
我已经更新了我SDK,并ADT到最新版本,我也更新Eclipse到Kepler之后的最新一个Juno.
我的ADT版本是22.0.在我创建一个新项目的更新后,我收到错误,说明R cannot be resolved to a variable.我已导入import android.R;,但它显示为未使用的导入说明Don't include android.R here; use a fully qualified name for each usage instead.
Mac OS也发生了同样的事情,最新的更新.我已经尝试重命名activity_main.xml为其他名称,但仍然R.java没有生成我的.
尝试了所有可能的事情.清理项目,构建整个工作区.什么都没有帮助.
我认为ADT或Eclipse兼容性在更新后出现问题.
我已经更新了我的整个SDK,这是截图,但同样的问题就在那里.

我正在使用eclipse,我创建了一个测试android项目,并且包含R.java当前调用的"gen"文件夹中的包com.something.test(我以为我只是测试但是在它上面构建我的整个应用程序!)
这是在加载应用程序时引用的,手机有时会显示它,所以我需要重命名它.我通过点击重构尝试了这个,但它用旧名称再次重新生成它!
我可以重命名吗?
我正在做记事本教程,练习2.我首先创建了一个新的Android项目,然后从源代码中选择Create来导入已下载的excercise源文件.
但是现在我在Eclipse中遇到了很多错误,问题是没有生成R.java类.我怎么解决这个问题?该文件夹gen/为空.
我有错误Notepadv2.java,并在res/layout/note_edit.xml两者似乎与所生成的事实R.java缺失.
以下是我的import发言Notepadv2.java:
import android.R;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
Run Code Online (Sandbox Code Playgroud)
它们由Eclipse命令Ctrl + Shift + O创建.
在android中,R.java用于提供对XML文件中定义的资源的访问.要访问资源,我们需要调用findViewById()传入要获取的资源的id的方法.
这与Spring类似,其中bean在XML上下文中定义,并通过使用应用程序上下文获取. context.getBean("beanId")
这提供了松散耦合,因为bean是在外部定义的,并且可以在不修改代码的情况下进行更改.
这让我很困惑.虽然Android看起来与spring相似,但它有什么优势?
- 有一个中间的R.java有什么意义呢?我们难道不能通过使用资源读取器/应用程序上下文直接从XML获取资源.例如
findViewById("resourceId")- 没有任何松耦合.由于R.java中的引用会自动生成,因此如何删除资源并放入新资源?
- 它遵循什么样的设计模式(如果有的话)?
- 使用IOC(如Roboguice)注入资源不是更好吗?为什么然后谷歌决定给我们这样一种奇怪的资源合作方式?
请原谅我的无知.我是一个新手Java开发人员,一次尝试太多东西.:-)感谢您的所有反馈.
做了全新的Eclipse,JDK和android-sdk安装.
我目前在创建新项目时收到此错误
[2010-09-26 16:07:56 - 测试]错误:无法打开类文件C:\ workspace\Test\gen\com\example\test\R.java:没有这样的文件或目录
这是什么原因,我该如何解决?
Eclipse Helios 32 bit
java version "1.6.0_21"
Android sdk API 8
Run Code Online (Sandbox Code Playgroud)
PS我是Android开发的新手.
编辑:我尝试了大多数解决方案,但没有任何效果.所以我开始使用我朋友安装的Eclipse Ganymede.
我在res/raw文件夹中有多个音频文件.我显示ListView包含音频文件名称.我想在用户选择时播放相应的音频文件ListView.我已经习惯了setDataSource(path),但是在播放时显示错误.如何直接从该文件夹播放音频文件?或者还有其他方法吗?
我想弄清楚"编译资源"是什么意思.
我已经阅读了很多关于这个主题的文章,但没有找到一个简单的答案.我读过的最好的是:android资源和资源ID之间的映射是如何工作的?.
根据我的理解,当我们通过ANT(Eclipse)或Gradle(AS)编译项目时.我们使用一个名为aapt的工具--Android Asset Packaging Tool:用于为我们的每个资源生成唯一的ID,例如我们的布局,样式等,并将它们存储在查找表中.然后它通过生成两个文件来持久化此查找表:
所以要简单一点:假设我在activity_main.xml中有这个:
<TextView android:id="@+id/my_textView"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
我从我的onCreate中调用它:
findViewById(R.id.my_textView)
Run Code Online (Sandbox Code Playgroud)
在我的R.java文件中,我将看到:
public static final int my_textView=0x7f08003f;
Run Code Online (Sandbox Code Playgroud)
在生成的apk上使用:aapt dump资源我可以看到它包含两行my_textView:ec资源0x7f08003f com.example.lizi.liortest2:id/my_textView:flags = 0x00000000资源0x7f08003f com.example.lizi.liortest2:id/my_textView :t = 0x12 d = 0x00000000(s = 0x0008 r = 0x00)
我原以为这个resources.arsc文件不仅包含资源ID,还包含我为视图定义的所有属性,例如android:layout_width ="wrap_content".
所以现在在运行时VM尝试运行时findViewById(R.id.my_textView)
如何知道要创建哪个视图/要创建的属性?
我根本无法理解它是如何工作的......这个查找表是否也不包含属性数据?什么是0x7f08003f号码?(它是否应该表示稍后将映射到将存储对象的物理内存的值?)
android ×10
r.java-file ×10
eclipse ×5
java ×2
adt ×1
architecture ×1
attr ×1
eclipse-adt ×1
media-player ×1
resources ×1