从Android的“values”文件夹中获取字符串资源

3

我有一个默认字符串需要在应用程序中使用,无论是什么语言。

考虑到它应该独立于应用程序语言,我没有将字符串放置在任何不同语言的string.xml文件中。相反,我创建了另一个myString.xml文件,并将其放置在values文件夹内,看起来像这样:

myString.xml

<resources>
    <string name="myStringResource">This text shall be available
for the entire app no matter the language
</string>
</resources>

但是现在我无法访问这个字符串。

这样做是否有误?如果有误,那么如何实现上述解释的情况?


1
如果只是一个字符串,您可以将其存储在首选项中,然后在任何需要的地方检索它。 - Aradhna
我刚刚测试了一下,创建了一个名为mystrings.xml的values文件夹,并在其中添加了一个名为<string name="mystring">hi</string>的新字符串。然后使用@string/mystring调用它,它可以正常工作。 - Yamen Nassif
正如@0xDEADC0DE所解释的那样,我认为你正在尝试在没有上下文引用类的情况下获取该字符串。 - Haresh Chhelana
1
@Haresh,是的,可能是上下文的问题,这个类只是public class testString,没有其他内容。 - codeKiller
如果您想要进入一个类,请确保您在Activity类内部,或者将您的Context传递给另一个类,并使用该上下文进行调用。例如:context.getString(R.string.myString); - Yamen Nassif
显示剩余9条评论
1个回答

12

要访问字符串,你可以按照Berat在回答中所说的做法。如果是从代码中使用ID(R.string.resName)或者XML中使用@string注解(@string/resName)来获取字符串。

然而,如果你使用代码(例如Java),你不能仅仅使用ID。你还必须使用Context.getString(R.string.resName);来获得实际的字符串。所以如果你想从代码中访问字符串并将它作为变量获取,你需要这样做:

String res = context.getString(R.string.myStringResource);

我写context,因为它是Context中的一个类。但是您也可以使用Activity实例来获取String。如果您正在一个Activity中编写代码,您可以直接编写String res = getString(R.string.myStringResource);

Activity指的是扩展了Activity或AppCompatActivity(或在某个级别上扩展了其中任一类)的类。


谢谢,我会尝试的。我几乎确定Context是问题所在。 - codeKiller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接