从类中调用getString(R.strings …)?

有没有办法从一个单独的使用getString方法?

我有一个string存储在我的stringxml中,我想在一个对象中使用该string…但该方法甚至没有在对象中可用…

有小费吗?

Solutions Collecting From Web of "从类中调用getString(R.strings …)?"

getString()Context ¹的一种方法。 如果你需要它在一个单独的类(不扩展Context ),通常是最好提供它作为一个单独的参数需要它的方法。

例:

 public void logString(Context c, int stringId) { Log.d("TAG", c.getString(stringId)); } 

有一件事很重要: 永远不要将上下文存储在单独的类中。
提供一个参数。 否则,如果存储上下文的对象比上下文最初属于的对象(例如活动)长,则会泄漏内存并破坏整个Android生命周期。

getString()也可以从Resources类中使用,你可以通过Context.getResources()

这里的解决scheme是确保你的对象有一个对应用程序上下文的引用

 Class Swag{ private Context ctx; public Swag(Context ctx){ this.ctx = ctx; } public void doSomething(){ String something = ctx.getResources().getString(R.string.somestring); ... } // or like this public void makeUpperCase(Context appContext){ appContext.getResources().getString(R.string.super_string_swag_yolo); } } 

显然,在创build对象或调用方法时,必须提供上下文

资源文件: values / strings.xml

 <resources> <string name="app_name">App name</string> <resources> 

java的

 import android.content.res.Resources; Resources.getSystem().getString(R.string.app_name);//result : App name 

编辑:下面将无法正常工作。 我在另一个网站上读到这个,并认为它的工作,但我只是在我的应用程序尝试,并不断得到一个错误。 问题是,它会编译,但你会得到一个运行时exception。

这将从任何Java类工作:

 import android.content.res.Resources Resources.getSystem().getString(R.string.blah); 

如果你不能传递一个上下文作为参数,创build另一个类,在那里你把所有的静态数据。

例如:

 public class StaticData { public static String BASE_URL = "https://stackoverflowrocks.com"; } 

并通过直接调用StaticData.BASE_URL从其他类中获取该string

不错,干净。

在你的java文件中试试这个:

String myString = getResources().getString(R.string.MY_STRING)

现在使用这个string对象。