Я делаю приложение Android. Android Studio справедливо ругает меня, если я жестко закодировал строки в редакторе макетов, поэтому я поместил их в res/values/strings.xml
. Для упрощенного примера:
<resources>
<string name="thing">Do a thing</string>
</resources>
Затем я установил для свойства text
кнопки значение @string/thing
. Это правильно отображает «Делать что-то» в редакторе макета, как и ожидалось. Однако, когда я загружаю свое приложение на телефон с помощью стандартных команд «Выполнить» или «Отладка» в Android Studio, кнопка остается пустой. Это интересно, поскольку, когда я вручную вызываю resources.getString(R.string.thing)
, я получаю "Do a thing"
назад.
Я могу вручную установить текстовые поля виджетов таким образом, выполняя такие акробатические операции, как:
findViewById<Button>(R.id.myButton).text = resources.getString(R.string.thing)
но это большая работа, которая, насколько я знаю, должна выполняться автоматически. Это случилось со мной и в приложении Java, поэтому проблема не в Kotlin -specifi c. Я использую Android Studio 3.6 на Linux, и устройство представляет собой Redmi Note 3 Pro с LineageOS 16 (P ie). Кнопка также пуста, когда приложение запускается в виртуальном AVD, поэтому, очевидно, я что-то делаю не так. Вот полный макет активности и строковые XML файлы.