2017-06-22 5 views
2

J'ai un module de fonctions de base et un module de fonctions (vous pouvez l'appeler "enfant"). Le module de fonction de base dispose d'un atout de fichier strings.xml contenant:Applications instantanées Android - Impossible de trouver un symbole à partir de l'élément fonctionnel de base

<resources> 
    <string name="app_string">Test String</string> 
</resources> 

je tente de faire référence à cette ressource de chaîne dans l'activité de fonction "enfant", comme ci-dessous:

int resId = R.string.app_string; 

Android studio apparaît pour respecter cette référence, et même me diriger vers la ressource app_string lorsque je clique dessus. Cependant, lors de la compilation, je suis rencontré avec le message d'erreur suivant:

Error:(13, 25) error: cannot find symbol variable app_string 

La construction caractéristique Gradle fichier pour mon « enfant » a la dépendance trop:

dependencies { 
    ... 
    implementation project(':base') 
} 

J'ai aussi essayé compile project(':base'), mais pas Succès.

Y a-t-il quelque chose de flagrant qui me manque?

Répondre

6

Vos modules de base et enfant ont des noms de package différents - disons com.example.base et com.example.child. Chacun contient ses propres ressources, et leurs identifiants seront recueillis dans des emballages séparés R:

  • com.example.base.R
  • com.example.child.R

Parce que vous essayez d'accéder à une ressource définie dans le module de base, vous devez le référencer avec le nom complet de la variable, à savoir com.example.base.R.string.app_string.

+0

J'ai essayé cela, mais malheureusement, je reçois 'Impossible de résoudre le symbole 'R'. Si je devais utiliser les paquets que vous avez listés, j'essaierais: 'int resId = com.example.base.R.string.app_string' comme vous l'avez dit. –

+0

Oh c'est intéressant, je l'ai résolu en utilisant 'com.example.R.string.app_string' (note, j'ai omis le répertoire' base' dans ce chemin) –