正如您所知道的那样,APK.xml中不存在strings.xml文件。这意味着无法更改getResources()。getString(R.string.mystring)将返回的内容。
你说“这是来自客户的要求”。我的建议是,你告诉客户“这是一个坏主意”。因为它确实是。
如果客户坚持下去,我猜你唯一的选择就是以你需要的任何语言下载文本,并将它存储在你的应用程序外部文件存储中。建议使用properties文件很好。 Load it as an InputStream和get strings from it。
您是否考虑过如果应用程序处于飞行模式或启动时没有可用网络会发生什么情况?你会提供默认值吗?
此外,使用此解决方案,您将无法在TextView中设置任何文本或XML中的类似文件,因为系统无法访问您在属性文件中下载的翻译。
如果你仍然继续这样做,我还建议你将属性文件包装到其他类中,如果文本不存在于属性文件中,则可以回退到strings.xml中的任何文本或者因为某种原因没有下载它:
class TextRetriever {
// the downloaded texts go here
private Properties properties;
private Context context;
public String getString(String key) {
String s = properties.getProperty(key);
// not found in properties file
if(s == null) {
// fall back to value in strings.xml
s = context.getResources().getIdentifier(key, "string", context.getPackageName())
}
return s;
}
}
你真的确定你不能在应用程序中集成文本吗? – njzk2
是的。这是来自客户的请求 – mrroboaat
如果您从网络中检索它们,将它们存储为文本文件有什么问题?如果您不想使用数据库或共享首选项。 –