2012-12-01 2 views
14

Recentemente ho passato a IntelliJ Idea 12.IntelliJ Idea non genera id in R.java

Ora ha creato un progetto su Android e subito imbattuto in un problema: non generato id in R.java

Rebuild progetto non aiuta.

Forse in IntelliJ Idea non ho nessuna sottigliezza?

errore:

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) 

file di R.java è vuoto:

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

Puoi deselezionare "usa build esterna" nella sezione opzioni del compilatore –

+0

Deselezionato. Non ha aiutato ... – Val

+0

Ho lo stesso problema. Il progetto si integra bene in Intellij 11, ma non compila le risorse in 12 –

risposta

13

Quello che stai osservando è probabilmente il comportamento-design 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."

Nel tuo caso, guardare in ~/.IntelliJIdea12\system\compiler\YOUR_PROJECT_NAME.RANDOM_STRING\.generated\aapt\YOUR_PROJECT_NAME.RANDOM_STRING\production\package\R.java

Questo file dovrebbe essere aggiornato e dovrebbe contenere tutti gli ID che ci si aspetta.

Dovrebbe anche essere collegato alle funzionalità di Idea del completamento automatico, ricerca di utilizzo, ecc. Da una sorta di magia interna Idea.

Il R.java vuoto è normale (sebbene fuorviante e Jetbrains intende modificare questo comportamento).

+4

FYI Ho trovato il mio R.java in ~./IdeaIC12/system/compile-server/PROJECT_NAME_STRING/android/generate_sources/APP_NAME/aapt/com/packagename/R.java! – Murphy

+0

Grazie! Mi stava facendo impazzire a trovarlo. Questo è un sistema assolutamente terribile dato che alcuni errori dipendono così tanto dalla ricerca degli ID. – Anthony

-1

Questo problema è venuto se il progetto java compilatore è differents che il vostro java Android compiler.Change l'impostazione del progetto e pulito il progetto sta funzionando. se il problema non risolve quindi goto project properties-> android -> seleziona qualsiasi versione Android quindi compila

+0

Come pulire il progetto in IntelliJ Idea? – Val

+0

vai all'opzione di menu Progetto seleziona clean e seleziona il tuo progetto o tutti i project project-> clean-> single/all –

+0

può essere Structure of IntelliJ IDEA Project? Non riesco a trovare "Menu Progetto" – Val

-6

Crea linee di codice nei commenti dove stai usando "R.id" e poi esegui il tuo progetto.

quindi per la prossima volta rimuovere i commenti ed eseguirlo di nuovo.

Speriamo che funziona

+0

Perché questo deve aiutarmi? Non è una soluzione. – Val

2

Ho incontrato lo stesso problema. Essendo stanco di Eclipse, ho deciso di provare un nuovo IDE. Ho creato un nuovo progetto per Android e all'interno di un nuovo modulo (cercando di rendere gli esempi Beginning Android da compilare ed eseguire). Quando ho creato un nuovo modulo, ho creato le solite directory che ti aspetti, incluso gen. Ho copiato i file sorgente, il manifest e la directory res. Correte in questo numero, dove IDEA non riusciva a capire cosa fosse R.. Ho fatto la seguente:

  • rimuovere importazione di android.R
  • eliminazione directory gen

Dopo un chiaro accumulo gen riapparve e il progetto era ok.

Hoje aiuta qualcuno.

2

Chiudere tutte le finestre intellij, rinominare la cartella del progetto e aprirlo di nuovo ha risolto il mio problema.

UPDATE:

Intellij tende a salvare i file generati nella cartella di essa la propria nei documenti degli utenti. Quindi un altro modo per questa situazione è di invalidare i file di cache. Vai al menu file e seleziona invalida cache, quindi intellij si riavvierà e rigenererà le cache e altri file richiesti e tutto andrà bene!

0

Sembra che il layout non contenga nulla. Se si espande la directory res/layout nel progetto, fare doppio clic sul file main.xml. Basta aggiungere un pulsante o qualcosa e dargli un ID. Questo dovrebbe preoccupare