无法从Android应用程序获取资源。

5

我正在开发一个安卓应用,但是我遇到了从string.xml获取资源的问题。

我需要在String.xml中有一个URL,在整个应用程序中会多次使用。

我尝试过使用Resources.getText(“my_url”),但是这种方法不起作用。当我使用它时,Eclipse会提示错误。

您认为这是最好的解决方法吗?

2个回答

12

你可能想要的是:

String myUrl = getString(R.string.my_url);
getString()方法位于Context中,这意味着由于ActivityContext的子类,因此它直接在Activity类中可用。(getString()方法也在Resources中,但在Activity上直接调用更容易。)
对于您的XML资源,每个资源都会被分配一个唯一的整数ID,并作为public static final int添加到自动生成的R中。然后使用这些ID引用资源。在Eclipse项目的gen文件夹中查看,您会找到R类。

谢谢,我会检查这个。但是,如果我想在Activity之外(例如在帮助程序类中)获取此字符串,我可以使用GetBaseContext().getString(key)吗? - Luc
2
很抱歉,我不知道GetBaseContext()是什么。我会将一个Context传递给我的每个帮助类,以便它们可以执行此类操作。但是,请注意,如果您保留对上下文的引用,可能会导致内存泄漏。请参考http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html。 - David Webb
谢谢,那是一个很好的观点和非常好的文章。干杯,Luc。 - Luc
你好,当我使用以下代码时,Eclipse没有任何抱怨: server = context.getString(R.string.server_url); 所以,这看起来很好。我可能会遇到的问题与上下文引用泄漏有关(正如您在文章中指出的那样)。您认为在活动中拥有私有上下文(在onCreate方法中使用context = this实例化)并将此上下文传递给Utilities方法是否安全? 非常感谢, Luc - Luc
1
将“Context”传递给实用方法是可以的,只需确保没有任何实用类保留对“Content”的引用。 - David Webb

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接