5.5 上下文或活动之外的getString方法 | Java Debug 笔记

384 阅读1分钟

本文正在参加「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…