2010-11-03 13 views
5

He encontrado un problema extraño en el que si llamo al getString(R.string.somestringname), de vez en cuando, incluso después de eliminar el archivo R y volver a compilar, aparece la cadena incorrecta. El emulador no se cuelga y aparece una cadena válida, es la incorrecta.Los ID de recursos de Android se asignan incorrectamente

Una muestra de mi strings.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <!-- Activity Names --> 
    <string name="app_name">an app name</string> 
    <string name="selector_name">app name | Select</string> 
    <string name="create">Create</string> 
    <string name="overview_name">appname | Overview</string> 
    <string name="another_name">appname | Another View</string> 

..... 
    <!-- Edit Note --> 
    <string name="placeholder">Foo bar</string> <-- here is a problem 
    <string name="created">Created:</string> 

</resources> 

Este es un ejemplo de código en la que aparece uno de los problemas:

if (note.created != null) { 
    createdtext.setText(getString(R.string.created) + " " + Util.longDateFormat(note.created)); 
} 

El texto que se emite (algunas de las time) es Foo bar November 03, 2010 (es decir, pertenece a R.string.placeholder). Que esta pasando? Esto me pone nerviosamente tentado a codificar las cadenas ;-)

¡Gracias por su ayuda!

+0

Probablemente debería mencionar mi entorno de desarrollo es OSX Snow Leopard y compilo con 'hormiga de instalación' – SapphireSun

Respuesta

5

Use ant clean install en lugar de solo ant install.

Java incorpora constantes como los valores de R.id en bytecode generado, y algunas veces sus clases no se vuelven a compilar aunque lo necesiten. Idealmente, ant install manejaría esto correctamente; hasta que lo haga, ant clean install es tu amigo.

+0

estoy teniendo un problema con el estudio de Android, ¿debo hacerlo gradlew clean? – david

+0

@david: Este problema en particular (los valores 'R.id' que no coinciden con sus widgets) era más del dominio Ant/Eclipse. No he visto este problema con Gradle (con o sin Android Studio). – CommonsWare

+0

Tengo este problema cada 2 - 3 builds android studio 2.1.1, tal vez he configurado mal algo en mi aplicación, pero no creo que la creación de la aplicación android a veces funcione y otras no (lo que quiero decir es que asignó incorrectamente R.string .etc para correlacionarse con cadenas incorrectas) – david

Cuestiones relacionadas