【问题标题】:Can't get localized strings from xml files correctly无法从 xml 文件中正确获取本地化字符串
【发布时间】:2009-12-23 14:48:06
【问题描述】:

我一直在为此绞尽脑汁……

我在 values-en 文件夹中有一个本地化的 strings.xml 文件,其中包含以下示例字符串: @string/my_string

字符串有以下用英文存储的文本:“My String”

当通过布局访问本地化字符串时,它工作正常。

当我尝试在代码中更改它时,这就是我遇到问题的地方。

我将字符串存储到字符串数组中以备后用。 “上下文”从我的活动传递到数据类并与这行代码一起使用:

dataStrings = new String[] { (String) context.getResources().getString(R.string.my_string) };

稍后,我尝试显示这个字符串,如下所示:

按钮[0].setText(dataStrings[0]);

它显示:

@string/my_string

如何让它显示没有'@string/'的字符串,正确的本地化字符串?

【问题讨论】:

    标签: java android string localization


    【解决方案1】:

    你可以运行getString() directly on the Context object;你不需要运行getResources()。但是,这应该与您目前正在做的事情相同,所以我认为这不是您问题的根源。

    首先要确认的是你认为正在发生的事情正在发生。使用调试器检查 buttons[0] 是否包含 "@string/my_string" 或尝试使用硬编码值调用 setText() 以确保文本实际上在正确的按钮上更新 - 例如buttons[0].setText("StackOverflow!");

    【讨论】:

    • 谢谢戴夫!检查字符串内容后,我注意到我使用了不正确的数组索引(数组比发布的示例大得多)。另外,感谢您对上下文对象的提醒。有什么方法可以静态调用它,而不必传递上下文?我试过:Context.getResources().getString(R.string.my_string) 但我不能在非静态方法上使用。
    猜你喜欢
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    相关资源
    最近更新 更多