IntelliJ IDEA的不生成ID在R.java [英] IntelliJ Idea not generate id in R.java

查看:1144
本文介绍了IntelliJ IDEA的不生成ID在R.java的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近切换到IntelliJ IDEA的12。

现在在android上的一个项目,很快就遇到了一个问题:在R.java未生成的ID

重建项目没有帮助。

也许在IntelliJ IDEA的有什么微妙的是不知道我?

错误:

  12-01 16:08:15.067:ERROR / AndroidRuntime(7108):致命异常:主要
android.content.res.Resources $ NotFoundException:字符串资源编号为0x1
在android.content.res.Resources.getText(Resources.java:266)
在android.widget.TextView.setText(TextView.java:3624)
在com.example.poem_new.MyActivity.invalidateCounters(MyActivity.java:41)
在com.example.poem_new.MyActivity.access $ 000(MyActivity.java:11)
在com.example.poem_new.MyActivity $ 1.onTextChanged(MyActivity.java:29)
在android.widget.TextView.sendOnTextChanged(TextView.java:8027)
在android.widget.TextView.handleTextChanged(TextView.java:8074)
在android.widget.TextView $ ChangeWatcher.onTextChanged(TextView.java:8454)
在android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:892)
在android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352)
在android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:266)
在android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:443)
在android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:420)
在android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:29)
在android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:669)
在android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:188)
在com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:149)
在com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:315)
在com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:85)
在android.os.Handler.dispatchMessage(Handler.java:99)
在android.os.Looper.loop(Looper.java:154)
在android.app.ActivityThread.main(ActivityThread.java:4945)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
在dalvik.system.NativeStart.main(本机方法)
 

R.java文件是空的:

  / *这存根是用于使用IDE只。它实际上不是打包成APK R类* /
公共final类环R {
}
 

解决方案

你在观察可能是由设计理念中的12行为:

<一个href="http://youtrack.jetbrains.com/issue/IDEA-99045">http://youtrack.jetbrains.com/issue/IDEA-99045

  

这是IDEA 12的行为,它不会产生完全R.java在根文件夹,它生成它在编译过程中IDEA的系统目录。

在你的情况,考虑<$c$c>~/.IntelliJIdea12\system\compiler\YOUR_PROJECT_NAME.RANDOM_STRING\.generated\aapt\YOUR_PROJECT_NAME.RANDOM_STRING\production\package\R.java

这个文件应该是最新的,它应该包含您所期望的ID。

还应该迷上了自动完成,使用搜索等理念的功能通过某种内部的思想法宝。

空R.java是正常的(虽然误导,并Jetbrains的打算改变这种行为)。

I recently switched to IntelliJ Idea 12.

Now created a project on android and immediately ran into a problem: not generated id in R.java

Rebuild project does not help.

Maybe in IntelliJ Idea have any subtlety is not known to me?

error:

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 file is empty:

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

解决方案

What you're observing is probably the by-design behaviour in Idea 12:

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

"It is behaviour of IDEA 12, it doesn't generate full R.java in gen folder, it generates it in the IDEA's system dir during compilation."

In your case, look into ~/.IntelliJIdea12\system\compiler\YOUR_PROJECT_NAME.RANDOM_STRING\.generated\aapt\YOUR_PROJECT_NAME.RANDOM_STRING\production\package\R.java

This file should be up to date and it should contain all the IDs you expect.

It should also be hooked up to Idea's functionalities of autocompletion, usage search etc by some sort of internal Idea magic.

The empty R.java is normal (although misleading, and Jetbrains intends to change this behaviour).

这篇关于IntelliJ IDEA的不生成ID在R.java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆