首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android:静态中的getString(R.string)

Android:静态中的getString(R.string)
EN

Stack Overflow用户
提问于 2010-09-29 22:43:24
回答 6查看 32.2K关注 0票数 30

在为Android编程时,有时您必须使用静态方法。但是,当您尝试使用getString(R.string.text)以静态方法访问您的资源时,您会得到一个错误。将其设置为静态是行不通的。

有谁知道解决这个问题的好方法吗?Android中的资源文件对于用不同的语言创建东西或对文本进行更改非常有用。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-09-29 22:45:37

不管怎样,你需要一个上下文……对于静态方法,这可能意味着在调用它们时需要传递上下文。

票数 30
EN

Stack Overflow用户

发布于 2014-02-04 15:53:17

您可以使用Resources.getSystem().getStringArray(android.R.array.done);

票数 20
EN

Stack Overflow用户

发布于 2017-01-26 18:18:05

这就是我从静态方法内部访问资源的方式。也许不是很理想,但是。

首先,我扩展了Application并设置了一些公共静态字段,并创建了一个初始化它们的方法:

代码语言:javascript
运行
复制
public class MyApp extends Application {

  // static resources
  public static String APP_NAME;

  public static void initResources(Context context) {
    APP_NAME = context.getResources().getString(R.string.app_name);
  }
}

在我的清单中,我注册了扩展应用程序:

代码语言:javascript
运行
复制
<application 
  android:name=".MyApp"/>

在我的启动器活动(MainActivity)中,我调用初始化静态资源:

代码语言:javascript
运行
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
  MyApp.initResources(this);   
}

然后,在项目中的任何地方,在MainActivity.onCreate(Bundle b)运行之后,您可以调用静态方法来访问指定的静态资源:

代码语言:javascript
运行
复制
public static void printAppName() {
  Log.w("tag", "my app name: " + MyApp.APP_NAME);
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3822732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档