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

2022-09-04 03:45:52

我最近切换到IntelliJ Idea 12。

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

重建项目没有帮助。

也许在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 {
}

答案 1

你所观察到的可能是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打算改变这种行为)。


答案 2

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

  • 删除安卓的导入。R
  • 删除生成目录

在一个清晰的构建一代重新出现之后,项目没问题。

Hoje它帮助某人。


推荐