Reputation: 9388
I have encountered a strange problem where if I call getString(R.string.somestringname)
, from time to time, even after deleting the R file and recompiling, the incorrect string appears. The emulator is not crashing and a valid string is appearing - it's just the wrong one.
A sample of my 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>
Here is a sample of code where one of the problems is encountered:
if (note.created != null) {
createdtext.setText(getString(R.string.created) + " " + Util.longDateFormat(note.created));
}
The text that is output (some of the time) is Foo bar November 03, 2010
(i.e. belonging to R.string.placeholder). What is going on? This is unnervingly making me tempted to hardcode the strings ;-)
Thanks for your help!
Upvotes: 5
Views: 907
Reputation: 1006564
Use ant clean install
instead of just ant install
.
Java inlines constants like the R.id values into generated bytecode, and sometimes your classes are not being recompiled, even though they need to be. Ideally, ant install
would handle this properly; until it does, ant clean install
is your friend.
Upvotes: 5