2013-08-09 4 views
35

Stavo lavorando sulla mia app e tutto era normale finché non ho provato a visualizzare l'immagine in java.Android Studio: Gradle: errore: impossibile trovare la variabile di simbolo

Ho eseguito l'app una volta e funzionava normalmente, l'immagine è stata visualizzata. Successivamente mi ha chiesto di importare alcune librerie e le ho importate. Dopo ho avuto errori per le mie attività.

errori come:

Gradle: error: cannot find symbol variable activity_main 
Gradle: error: cannot find symbol variable button1 
Gradle: error: cannot find symbol variable button2 
Gradle: error: cannot find symbol variable textView 
Gradle: error: cannot find symbol variable secondActivity 

In MainActivity Ho importato queste librerie:

import android.R; 
import android.content.Intent; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.Button; 

e in secondActivity questi:

import android.R; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

Qualcuno sa come risolvere questo problema?

MODIFICA: Ho eliminato import android.R; e ora funziona normalmente.

+0

Una risincronizzazione di Gradle ha risolto questo problema per me. – akiraspeirs

risposta

53

Non si deve importare android.R. Questo dovrebbe essere generato e riconosciuto automaticamente. This question contiene molti suggerimenti utili se si verifica un errore relativo a R dopo aver rimosso l'importazione.

alcuni passaggi di base dopo aver rimosso l'importazione, se queste appaiono errori:

  • Pulire la build, quindi rigenerare
  • Assicurarsi che non vi siano errori o refusi nei file XML
  • assicurarsi che il proprio i nomi delle risorse sono costituiti da [a-z0-9.]. Capitali o simboli non sono ammessi per qualche motivo.
  • eseguire una sincronizzazione Gradle (tramite Strumenti> Android> progetto Sync con Gradle File)
+0

Per dichiarare manualmente "import com.your.app.package.name.R" è stata corretta la variabile "impossibile trovare la variabile simbolo". Ma questo è successo dopo aver copiato una classe da un modulo nel progetto dell'app principale in Android Studio e Gradle non è riuscito a creare. Ma suggerirei di provare prima le opzioni precedenti, poiché questo è il probabile caso di questo errore. – TouchBoarder

+1

Ho avuto un problema simile al momento. Il problema era che nel mio progetto avevo più moduli. Per esempio. modulo 'com.packagename.app' e' com.packagename.library'. Sebbene entrambi, la classe e la risorsa 'R.string' provengano dal modulo' com.packagename.app', ho in qualche modo importato com.package.library.R' nella classe. In qualche modo Android Studio non ha riconosciuto questo come errore e Gradle/Sync crea il mio progetto senza problemi. Ma quando ho provato a eseguire Test delle unità, la build di Gradle non è riuscita con l'errore descritto. La rimozione di "import com.packagename.library.R' ha risolto il mio problema. –

+0

Nota: il carattere di sottolineatura '_' può essere utilizzato anche in ID risorsa –

19

Se si utilizza molteplici sapori?

-make sure the resource file is not declared/added both in only one of the flavors and in main.

Esempio: a_layout_file.xml file contenente la variabile simbolo (s)

src:

flavor1/res/layout/(nessun file)

flavor2/res/layout/a_layout_file.xml

principale/res/layout/a_layout_file.xml

Questa impostazione darà l'errore: non riesce a trovare il simbolo variabile, questo è perché il file di risorse può essere solo in entrambi i sapori o solo nella principale.

10

Se si utilizza un campo di configurazione String accumulo nel progetto, questo potrebbe essere il caso:

buildConfigField "String", "source", "play" 

Se dichiarate la vostra stringa come sopra causerà l'errore accada. La correzione è di cambiarlo a:

buildConfigField "String", "source", "\"play\"" 
0

Assicurarsi di avere MainActivity e .ScanActivity nel file AndroidManifest.xml:

<activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".ScanActivity"> 

    </activity> 
0

Assicurarsi che le variabili sono portata per il metodo che fa riferimento esso. Ad esempio, avevo definito una vista testuale localmente in un metodo della classe e facevo riferimento a esso in un altro metodo.

Ho spostato la definizione del testo al di fuori del metodo proprio sotto la definizione della classe in modo che l'altro metodo potesse accedere alla definizione, che ha risolto il problema.

0

assicurarsi che la R importata non provenga da un altro modulo. Avevo spostato una classe da un modulo al progetto principale, e la R era quella del modulo.