在Android应用程序中,我需要从资源文件夹中选择除当前所选资源之外的资源(界面语言是系统选择的任何内容,但用户可以为TTS选择不同的语言)。由于应用程序的结构化方式,交换资源不是一种选择;我需要同时设置默认设置和替代设置。我能够使用此代码,例如,选择西班牙语字符串时,用户界面是英文:如何从当前Android资源文件夹中选择一个字符串?
class SpanishStrings()
{
private Resources mResources;
public Foo(Context context)
{
final Resources oldResources = context.getResources();
Configuration oldConfiguration = oldResources.getConfiguration();
DisplayMetrics metrics = oldResources.getDisplayMetrics();
Configuration configuration = new Configuration(oldConfiguration);
configuration.locale = new Locale("es", "es");
mResources = new Resources(oldResources.getAssets(), metrics, configuration);
}
String getString(int id)
{
return mResources.getString(id);
}
}
但是,这也设置整个用户界面,西班牙! Android可以一次只有一个活动资源吗?
这是运行在Android 2.3.4,如果这有什么区别。
上面的代码使用原有资产()也和我上面的代码已经创建一个新的配置。唯一不同的是Metrics,但我会试一试。 –
对不起,没有工作,但现在我想我知道为什么!创建新资源会更新资产,AssetManager不会提供我可以看到的自我复制方法。 –