IntelliJ Idea不会在R.java中生成id

时间:2012-12-01 16:12:24

标签: java android compilation intellij-idea

我最近切换到IntelliJ Idea 12。

现在在android上创建了一个项目并立即遇到了一个问题:在R.java中没有生成id

重建项目无济于事。

也许在IntelliJ Idea中我不了解任何微妙之处?

错误:

12-01 16:08:15.067: ERROR/AndroidRuntime(7108): FATAL EXCEPTION: main
android.content.res.Resources$NotFoundException: String resource ID #0x1
at android.content.res.Resources.getText(Resources.java:266)
at android.widget.TextView.setText(TextView.java:3624)
at com.example.poem_new.MyActivity.invalidateCounters(MyActivity.java:41)
at com.example.poem_new.MyActivity.access$000(MyActivity.java:11)
at com.example.poem_new.MyActivity$1.onTextChanged(MyActivity.java:29)
at android.widget.TextView.sendOnTextChanged(TextView.java:8027)
at android.widget.TextView.handleTextChanged(TextView.java:8074)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:8454)
at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:892)
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352)
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:266)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:443)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:420)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:29)
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:669)
at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:188)
at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:149)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:315)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:85)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:4945)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

R.java文件为空:

    /* This stub is for using by IDE only. It is NOT the R class actually packed into APK */
public final class R {
}

6 个答案:

答案 0 :(得分:13)

您正在观察的可能是Idea 12中的设计行为:

http://youtrack.jetbrains.com/issue/IDEA-99045

  

"这是IDEA 12的行为,它不会在gen文件夹中生成完整的R.java,它会在编译期间在IDEA的系统目录中生成它。"

在您的情况下,请查看~/.IntelliJIdea12\system\compiler\YOUR_PROJECT_NAME.RANDOM_STRING\.generated\aapt\YOUR_PROJECT_NAME.RANDOM_STRING\production\package\R.java

此文件应该是最新的,并且应该包含您期望的所有ID。

它还应该通过某种内部的Idea魔术与Idea的自动完成,使用搜索等功能相结合。

空的R.java是正常的(尽管有误导性,Jetbrains打算改变这种行为)。

答案 1 :(得分:2)

我遇到了同样的问题。厌倦了Eclipse,我决定尝试新的IDE。 我为Android创建了一个新项目,并在一个新模块中创建(尝试编写和运行Beginning Android示例)。当我创建一个新模块时,它创建了您期望的常用目录,包括gen。我复制了源文件,清单和res目录。 遇到这个问题,IDEA无法弄清楚R.是什么。我做了以下事情:

  • 删除android.R
  • 的导入
  • 删除gen目录

在明确的构建基础再次出现并且项目没问题之后。

Hoje它可以帮助某人。

答案 2 :(得分:2)

关闭所有intellij窗口,重命名项目文件夹并再次打开它解决了我的问题。

更新:

Intellij倾向于将生成的文件保存在用户文档中自己的文件夹中。因此,这种情况的另一种方法是使缓存文件无效。转到文件菜单并选择invalidate caches,然后intellij将重新启动并重新生成缓存和其他所需文件,一切都会好的!

答案 3 :(得分:0)

看起来您的布局中没有任何内容。如果在项目中展开res / layout目录,请双击main.xml文件。只需添加一个按钮或其他东西,并给它一个id。那应该是世界

答案 4 :(得分:-1)

如果您的Project java编译器与您的android java编译器不同,则会出现此问题。更改项目设置和清理项目正在运行。 如果问题没有解决,那么转到项目属性 - > android - >选择任何Android版本 然后编译

答案 5 :(得分:-6)

在您正在使用的评论中创建代码行" R.id"然后运行你的项目。

然后下次删除评论并再次运行。

希望它会起作用