Android 是否可以在运行时手动切换字符串资源?

Android 是否可以在运行时手动切换字符串资源?,android,android-layout,android-resources,Android,Android Layout,Android Resources,让我从描述我的问题开始。我正在开发一个大型Android应用程序,它有大量的布局和字符串(都在strings.xml中)。提出了一个新的要求,要求某些字符串根据启动时的条件而有所不同(请考虑将“cat”替换为“dog”的所有实例)。此条件不依赖于设备的任何内容(区域设置、大小、分辨率等):它只依赖于业务逻辑中的某些内容 最简单的方法是为所有使用带有“cat”的字符串的布局文件创建新的副本,而在这些新的布局副本中使用带有“dog”的字符串。然而,由于布局的数量以及基本重复布局的未来维护问题,这并不

让我从描述我的问题开始。我正在开发一个大型Android应用程序,它有大量的布局和字符串(都在strings.xml中)。提出了一个新的要求,要求某些字符串根据启动时的条件而有所不同(请考虑将“cat”替换为“dog”的所有实例)。此条件不依赖于设备的任何内容(区域设置、大小、分辨率等):它只依赖于业务逻辑中的某些内容

最简单的方法是为所有使用带有“cat”的字符串的布局文件创建新的副本,而在这些新的布局副本中使用带有“dog”的字符串。然而,由于布局的数量以及基本重复布局的未来维护问题,这并不完全可行

我知道这不是一个讨论论坛,所以我有一个我想关注的方法。在我看来,这个问题与正常的资源配置/区域设置密切相关,因为设备的属性提供了不同的资源。有没有办法让它对我的情况起作用?不同之处在于,所需的配置只在运行时才知道,并且没有一个现有的有意义的资源限定符(例如,我们可能会翻译成法语,所以我不想背负这一点)。但我无法想象我的问题是独一无二的


如果有其他我应该使用的方法,请让我知道,尽管我不想在讨论过程中走得太远,因为太多人不赞成。坦率地说,即使在这里问这个问题也可能有风险,但我不知道还有什么地方可以问。

我可以想出几种解决方案:

您可以在运行时设置字符串,如
yourTextView.setText(R.string.any_string)
with:

1) A为您的业务逻辑提供一些资源字符串。
2) A,


3) 从web服务获取字符串,如果可能的话

可以使用string.format()并在资源xml中格式化字符串?例如
string.format(“嘿,这是一个%s”,“狗”)任何需要替换的地方。您的字符串xml将包含一个%s。不过,这个解决方案可以在代码中工作,而且我相信在xml中不容易(或根本不可能)完全可行。您的布局仍然可以有
android:text=“@string/my_string”
,但您的业务逻辑需要相应地格式化它。是的,我考虑过这一点,但正如您所说,它不适用于XML。问题是我需要做的绝大多数替换都是在目前没有任何代码涉及的标签中,因此这将是相当多的更改。
getResources().getString(R.string.tempale, "your value")