java - 如何在没有布局的情况下在 Android 的 Java 文件中使用字符串资源
问题描述
我有一个主要包含字符串的 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"
奇怪的是资源实际上存在(我检查了几次)引起的。
解决方案
getString(R.string...
不一样
Resources.getSystem().getString(android.R.string...
只有第二种变体可以在静态上下文中使用。唉,你只能通过这种方式获得系统资源。
如果您需要获取自己的资源,则不存在单线解决方案。使用@Cristian 的https://stackoverflow.com/a/4391811/715269解决方案。请注意:这是一个非常好的解决方案,更重要的是,它是供Android 的创建者使用的解决方案。
推荐阅读
- javascript - 无法添加事件侦听器
- ios - 内容类型 oneTimeCode 无法与 IQkeyboard 管理器一起使用
- javascript - 优化 Canvas 上的 HTML5 drawImage 视频
- java - 如何有效地在 Java 中随机播放 2D 列表?
- device-policy-manager - 设备未根据策略的 minimumVersioCode 强制更新
- reactjs - 反应工具提示中的 if 语句
- python - 根据列值 pandas 将分数填充到行
- c# - 如何从 C# 中的 mysql 表中读取数据?
- python - 在数据帧中按顺序计算两个非零数之间的零数
- docker-compose - Identity Server4:无法从 'http://localhost:44338/.well-known/openid-configuration 获取配置