пример howto:
как? путем изменения одной ссылки на переменную на другую ссылку
использование:
setRColor(pl.mylib.R.class,"endColor",pl.myapp.R.color.startColor);
// override app_name in lib R class
setRString(pl.mylib.R.class,"app_name",pl.myapp.R.string.app_name);
базовые методы:
public static void setRColor(Class rClass, String rFieldName, Object newValue) {
setR(rClass, "color", rFieldName, newValue);
}
public static void setRString(Class rClass, String rFieldName, Object newValue) {
setR(rClass, "string", rFieldName, newValue);
}
// AsciiStrings.STRING_DOLAR = "$";
public static void setR(Class rClass, String innerClassName, String rFieldName, Object newValue) {
setStatic(rClass.getName() + AsciiStrings.STRING_DOLAR + innerClassName, rFieldName, newValue);
}
вспомогательные методы:
public static boolean setStatic(String aClassName, String staticFieldName, Object toSet) {
try {
return setStatic(Class.forName(aClassName), staticFieldName, toSet);
} catch (ClassNotFoundException e) {
e.printStackTrace();
return false;
}
}
public static boolean setStatic(Class<?> aClass, String staticFieldName, Object toSet) {
try {
Field declaredField = aClass.getDeclaredField(staticFieldName);
declaredField.setAccessible(true);
declaredField.set(null, toSet);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@ bradenV2 Мое приложение поддерживает множество языков, поэтому я хотел взять
строка из моего strings.xml, который используется в настоящее время, и измените его,
и затем используйте это - atuljangra 12 марта 12 в 22: 04
ps вышеприведенное решение хорошо, например, когда вы хотите вставить некоторые данные в уже скомпилированный lib / jar. Но если вы хотите локализовать строки, просто создайте папку в res для LANG CODE, например values-CC, где cc - это код lang (values-de, values-cs) и т. Д.
тогда у вас есть 2 варианта:
- «встроенный» системно-зависимый выбор языка - в зависимости от выбранного устройства lang
- через создание ресурсов для конфигурации - вы решаете, какой lang show
вот так:
configuration = new Configuration(resources.getConfiguration());
configuration.setLocale(targetLocale);
String localized = Context.createConfigurationContext(configuration)
.getResources()
.getString(resourceId);