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

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

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

有小费吗?

  • Android应用程序上下文是否被破坏?
  • AsyncTask和上下文
  • 如何获得视图类中的活动引用?
  • Android:静态字段和内存泄漏
  • 尝试从ContentObserver中激发一个意图
  • IsolatedContext与AndroidTestCase.getContext()
  • 如果上下文不是活动上下文而是应用程序上下文,如何启动Intent
  • 如何跨两个不同的android应用程序共享SharedPreferences文件?
  • 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对象。