将字符串资源放入android中的bundle中

时间:2011-12-05 13:38:54

标签: android

我有以下问题

Bundle bundle = new Bundle();
bundle.putString("url", "someUrl");

这很好用。但

bundle.putString("title", R.string.titleForUrl);

Eclipse注意到R.string.titleForUrl是一个int但应该是字符串。但是不是R.string.titleForUrl一个字符串?

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:6)

R.string.titleForUrls是一个整数,它是字符串表中的资源标识符。

要获取字符串,需要调用context.getString(R.string.titleForUrls)从资源加载字符串。

因此,如果您希望存储字符串,那么您可以传递加载的字符串或int,然后在从另一端的bundle中获取int时加载。

答案 1 :(得分:4)

使用此

bundle.putString("title",getString(R.string.titleForUrl);

答案 2 :(得分:2)

R.string.titleForUrl是资源ID。它是一个代表String资源的int。您可以使用yourActivity.getResources().getString(.string.titleForUrl)从此资源ID获取字符串。

有关详细信息,请参阅herehere以及此处。

答案 3 :(得分:1)

那是因为它是一个int。 R.string.titleForUrl是您从xml文档加载的字符串变量的ID号。你想要的是这样的:

bundle.putString("title", getResources().getString(R.string.titleForUrl);

答案 4 :(得分:1)

即使您的问题已经在前一段时间内完全得到了解答,但我想添加以下内容,因为您的问题在Google上排名很高:

由于以下原因,字符串资源(也称为here)不应实现捆绑密钥:

  1. 它们从未在视觉上呈现给用户
  2. 由于1.没有必要翻译它们,因此xml中的可翻译属性应始终设置为 false 以避免lint错误
  3. 它们仅以编程方式访问,不包含在布局或其他.xml文件中

  4. 结论:使用最终静态字符串应该是使用捆绑密钥的优先方式