本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看<活动链接>
**提问:上下文或活动之外的getString方法 **
我发现R.string非常适合将硬编码的字符串保留在我的代码之外,并且我想继续在实用程序类中使用它,该实用程序类与我的应用程序中的模型一起生成输出。 例如,在这种情况下,我从活动之外的模型生成电子邮件。
是否可以在上下文或活动外使用getString方法?我想我可以通过当前活动,但这似乎没有必要。如果我错了,请纠正我!
回答1:
是的,我们可以在不使用“上下文”的情况下访问资源
您可以使用
Resources.getSystem().getString(android.R.string.somecommonstuff)
在您应用程序的任何地方。
回答2:
App.getRes().getString(R.string.some_id)这个代码可以解决你的问题。
这个代码可以在应用程序中的任何地方工作。(Util类,Dialog,Fragment或应用程序中的任何类)。那么如何使用呢:
(1)创建或编辑您的Application class(如果已经存在)。
import android.app.Application;
import android.content.res.Resources;
public class App extends Application {
private static App mInstance;
private static Resources res;
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
res = getResources();
}
public static App getInstance() {
return mInstance;
}
public static Resources getRes() {
return res;
}
}
(2)在manifest.xml <application标签中添加名称字段。
<application
android:name=".App"
...
>
...
</application>
现在你可以在应用程序的任何地方使用App.getRes().getString(R.string.some_id)
文章翻译自Stack Overflow :stackoverflow.com/questions/4…