Можно ли напрямую выполнить замену строк в XML файлах ресурсов Android?
В моем приложении для Android у меня есть большой XML файл с строковым ресурсом. Я хочу сделать ссылку и повторно использовать объявленные значения ресурсов в значениях String. Возможно ли присвоить значения класса R ссылочным значениям (a la @string/db_table_name)?
<resources>
<string name="db_table_name">tbl_name</string>
<string name="ddl">create table @string/tbl_name</string>
</resources>
Есть ли способ сделать это. В обычном мире Java некоторые инструменты используют выражение ${varname} для разрешения ссылки. Это можно сделать вообще в Android?
Ответы
Ответ 1
Добавьте% s во вторую строку ресурсов (тот, который вы хотите быть динамическим), где вы хотите, чтобы он был изменен. то есть.,
<resources>
<string name="db_table_name">tbl_name</string>
<string name="ddl">create table %s</string>
</resources>
и в вашем коде используйте getString() для работы с магией,
getString(R.string.ddl, getString(R.string.db_table_name));
Ответ 2
Это действительно возможно.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
<!ENTITY appname "MyAppName">
<!ENTITY author "MrGreen">
]>
<resources>
<string name="app_name">&appname;</string>
<string name="description">The &appname; app was created by &author;</string>
</resources>
Вы даже можете определить свою сущность globaly, например:
Рез/сырой/entities.ent:
<!ENTITY appname "MyAppName">
<!ENTITY author "MrGreen">
RES/значения/string.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
<!ENTITY % ents SYSTEM "./res/raw/entities.ent">
%ents;
]>
<resources>
<string name="app_name">&appname;</string>
<string name="description">The &appname; app was created by &author;</string>
</resources>
Ответ 3
Ну, я не думаю, что это возможно. Потому что, как только ресурсы выделены, андроид не позволит нам динамически изменять их в воздухе. Вместо этого вы можете попробовать использовать свои строки в отдельном классе и изменить их при прохождении кода.