从java文件中获取android项目的字符串资源

时间:2012-01-21 05:00:51

标签: java android android-context

我在我的android项目的R.strings资源中定义了很多常量字符串。但是,我想在JUST一个java文件中使用它们。这个类只是一个java类。反正有没有得到那个参考?

我能够引用它,但我无法使用Context.getString()方法,因为它只是一个java文件。

我有什么选择?我应该在这个java文件中定义所有常量字符串吗?或者我还可以使用R.strings吗?


例如

getString(R.string.PLUS_SERVICE))

这不起作用,因为我没有上下文。


谢谢!

6 个答案:

答案 0 :(得分:5)

尝试

Context context=getApplicationContext();
context.getString(R.string.PLUS_SERVICE);

答案 1 :(得分:4)

这实际上取决于这些字符串是什么。字符串常量与字符串资源略有不同。通常,如果这些字符串最终出现在面向用户的文本中,您可能希望将它们放入字符串资源中。这样他们就可以很容易地进行本地化如果它们用于异常消息等,那么这不是那么重要,它们可以进入常量。

如果您需要在没有Context的课程中使用资源,则需要授予其访问权限。您可以将其传递给在参数中使用它的方法,也可以在创建类时将其传递给构造函数并将其存储在成员中。

答案 2 :(得分:2)

你可以做一件事,

将Java文件中的Constructor设为accept Context as parameter,例如

public ClassName(Context c)
{
}

在创建对象时从活动传递上下文

new ClassName(ActivityName.this);

现在您可以在Java文件中使用该上下文变量。

答案 3 :(得分:0)

正如其他人所说,资源是用于UI的。如果您需要这些字符串的类无法访问Context,那么它们可能只需要成为该类中的常量。如果您需要强制Context到类,那么您可能需要重新评估您的设计,因为您正在创建一个函数库而不是OO设计。资源的访问和使用应该自然而然地有一个好的OOD。

答案 4 :(得分:0)

试试这个 例如,在片段中,使用

getActivity().getApplicationContext().getString( R.string.resource )

答案 5 :(得分:0)

请确保:

Context context=this;

实际上是Activity上下文,然后访问字符串资源:

String string = context.getApplicationContext().getString(R.string.string_name)