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

发布于 2024-12-28 02:30:41 字数 339 浏览 0 评论 0原文

我在 Android 项目的 R.strings 资源中定义了很多常量字符串。但是,我想在 java 文件中使用它们。其中类只是一个 java 类。无论如何可以得到那个参考吗?

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

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


示例

getString(R.string.PL​​US_SERVICE))

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


谢谢!

I am defining a lot of my constant strings in the R.strings resource for my android project. However, i would like to use them in JUST a java file. Where the class is just a java class. Is there anyway to get that reference?

I am able to reference it, but i am unable to use the Context.getString() method, because it is only a java file.

What are my options here? Should i just define all my constant strings in this java file? Or can i still use the R.strings?


example

getString(R.string.PLUS_SERVICE))

This does not work, because i have no context.


Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

如若梦似彩虹 2025-01-04 02:30:41

尝试

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

try

Context context=getApplicationContext();
context.getString(R.string.PLUS_SERVICE);
长伴 2025-01-04 02:30:41

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

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

It really depends on what these strings are. String constants are subtly different from string resources. Generally if these strings end up in user-facing text, you probably want to put them into string resources. This way they can be easily localized. If they are for exception messages, etc. then this is not really that important and they can go into constants.

If you need to use resources in a class without a Context, you need to give it access to one. You can either pass it into the method that uses it in an argument, or you can pass it to the constructor when creating the class and store it in a member.

单身狗的梦 2025-01-04 02:30:41

您可以做一件事,

在Java文件中创建构造函数接受Context作为参数

public ClassName(Context c)
{
}

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

new ClassName(ActivityName.this);

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

You can do one thing,

Make Constructor in Java file to accept Context as parameter like,

public ClassName(Context c)
{
}

And pass context from activity when creating object,

new ClassName(ActivityName.this);

And now you can use that context variable in your Java File.

枯寂 2025-01-04 02:30:41

正如其他人所说,资源是用于 UI 的。如果需要这些字符串的类无法访问 Context,那么它们可能只需要成为该类中的常量即可。如果您需要将上下文强制到类中,那么您可能需要重新评估您的设计,因为您正在制作一个功能库而不是面向对象的设计。资源的访问和使用应该自然地与良好的 OOD 相结合。

As the others said the resources are for UI. If your class that needs these strings does not have access to the Context then they probably just need to be constants in that class. If you need to force the Context to the class then you may need to re-evaluate your design because you are then making a functional library and not an OO design. The access and use of the Resources should fall in naturally with a good OOD.

挖个坑埋了你 2025-01-04 02:30:41

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

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

try this
for example in fragment, use

getActivity().getApplicationContext().getString( R.string.resource )
虚拟世界 2025-01-04 02:30:41

确定:

Context context=this;

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

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

Be sure:

Context context=this;

Is actually the Activity context, and then access to the string resource as:

String string = context.getApplicationContext().getString(R.string.string_name)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文