Идентификаторы ресурсов Android назначаются неправильно - PullRequest
5 голосов
/ 03 ноября 2010

Я столкнулся со странной проблемой, когда при вызове getString(R.string.somestringname) время от времени, даже после удаления файла R и перекомпиляции, появляется неправильная строка.Эмулятор не падает, и появляется правильная строка - это просто неправильная.

Пример моего 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>

Вот пример кода, где один извозникают проблемы:

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

Текст, который выводится ( некоторое время ), равен Foo bar November 03, 2010 (т. е. принадлежит R.string.placeholder).Что здесь происходит?Это вызывает у меня соблазн жестко закодировать строки; -)

Спасибо за вашу помощь!

1 Ответ

5 голосов
/ 03 ноября 2010

Используйте ant clean install вместо ant install.

Java встроенные константы, такие как значения R.id, в сгенерированный байт-код, и иногда ваши классы не перекомпилируются, даже если это необходимо. В идеале ant install справится с этим правильно; пока это не так, ant clean install ваш друг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...