IntelliJ Idea не генерирует id в R.java - программирование
Подтвердить что ты не робот

IntelliJ Idea не генерирует id в R.java

Недавно я переключился на IntelliJ Idea 12.

Теперь был создан проект на android и сразу же столкнулся с проблемой: не сгенерированный id в R.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 {
}
4b9b3361

Ответ 1

То, что вы наблюдаете, возможно, является поведенческим поведением в Idea 12:

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

"Это поведение IDEA 12, оно не генерирует полный файл R.java в папке gen, он генерирует его в системном каталоге 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. Забегая в этом вопросе, ИДЕЯ не могла понять, что такое Р.. Я сделал следующее:

  • удалить импорт android.R
  • удалить каталог gen

После того, как появилось четкое создание сборки, и проект был в порядке.

Хойе помогает кому-то.

Ответ 3

Закрытие всех внутренних окон, переименование папки проекта и ее открытие снова решило мою проблему.

UPDATE:

Intellij имеет тенденцию сохранять сгенерированные файлы в своей собственной папке в документах пользователей. Таким образом, другой способ для этой ситуации - аннулировать файлы кеша. Перейдите в меню файлов и выберите недействительные кеши, затем intellij перезапустится и восстановит кеши и другие необходимые файлы, и все будет в порядке!

Ответ 4

Кажется, что в вашем макете ничего нет. Если вы расширяете свой каталог res/layout в своем проекте, дважды щелкните файл main.xml. Просто добавьте кнопку или что-то еще и дайте ей идентификатор. Это должно быть

Ответ 5

Эта проблема возникает, если ваш проект java complier отличается от вашего javas-компилятора android. Измените настройки проекта и очистите проект. если проблема не решена, то свойства проекта goto → android → выберите любую версию для Android затем скомпилируйте

Ответ 6

Сделайте строки кода в комментариях, где вы используете "R.id", а затем запустите проект.

затем в следующий раз удалите комментарии и запустите его снова.

Надеюсь, это сработает