英文:
How to use String ressource in Java file in Android without a Layout
问题
我有一个Java类,主要包含字符串。它没有布局,因为它既不是Fragment也不是Activity。它更多地被用作辅助类。我想通过使用资源字符串来为类中的字符串赋值,因为我想自动翻译这些字符串。然而,我无法从Java中访问字符串资源。我使用以下代码:
static String more = getString(R.string.more);
在XML文件中,我有资源定义:
<string name="more">More</string>
我得到错误消息:
Cannot resolve method 'getString'
我还尝试了 static String more = getContext().getString(R.string.more);
,但是我得到了错误消息:
Cannot resolve method 'getContext'
有人介意帮我解决这个问题吗?我会感谢每一条评论。
更新:我尝试了“MikaelM”的答案:
Resources.getSystem().getString(R.string.more)
然而,我得到一个“初始化器错误”的异常,当我再次使用初始字符串时,我不会得到这个错误。所以我仍然无法从资源中获取字符串。你有任何想法我该怎么做吗?我会欣赏每一条进一步的评论。
因此,错误的原因是“Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x7f120038”。奇怪的是,实际上这个资源是存在的(我多次检查过)。
英文:
I have a Java class that mainly contains strings. It does not have a layout as it is neither a Fragment nor an Activity. It is more used as an auxilliary class. I would like to assign the String values in the class by using the Resource strings as I would like to automatically translate the Strings. Howvever, I can't access the string resources from Java. I use the following code:
static String more = getString(R.string.more);
And in the XML file I have the ressource:
<string name="more">More</string>
I get the error message
Cannot resolve method 'getString'
I also tried static String more = getContext().getString(R.string.more);
but I got the error message:
Cannot resolve method 'getContext'
Would anyone mind helping me on that? I'd appreciate every comment.
Update: I tried to use the answer from "MikaelM"
Resources.getSystem().getString(R.string.more)
However, I get an "exception in initializer error" and when I use the initial String again, I do not get this error. So I still can't get the String from the ressource. DO you have an idea what I can do? I'd appreciate every further comment.
So the error is caused by "Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x7f120038"
The strange thing is that the resource in fact exists (I checked this several times).
答案1
得分: 1
你应该能够通过以下方式获取你的字符串:
Resources.getSystem().getString(R.string.more)
在这里查看更多信息,https://stackoverflow.com/questions/4253328/getstring-outside-of-a-context-or-activity
英文:
You should be able to get your string with:
Resources.getSystem().getString(R.string.more)
See more here, https://stackoverflow.com/questions/4253328/getstring-outside-of-a-context-or-activity
答案2
得分: 1
getString(R.string... 在静态上下文中不同于 Resources.getSystem().getString(android.R.string...。只有第二种变体可以在静态上下文中使用。不幸的是,你只能通过这种方式获取系统资源。
如果你需要获取你自己的资源,就没有一行代码的解决方案。使用 @Cristian 在 https://stackoverflow.com/a/4391811/715269 中提供的解决方案。请注意:这是一个非常好的解决方案,甚至可以说是 Android 的创建者们打算使用的解决方案。
英文:
getString(R.string...
is not the same as
Resources.getSystem().getString(android.R.string...
Only the second variant you can use in the static context. Alas, you can get this way only system resources.
If you need to get your own resources, no one-line solution exists. Use https://stackoverflow.com/a/4391811/715269 solution of @Cristian. And notice: it is a very good solution, even more, it is the solution meant to be used by the creators of Android.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论