28

我刚刚开始使用 VS2012 使用 Xamarin 创建一个简单的 android 应用程序。我知道有一种类型的资源只用于字符串。在我的资源文件夹中,我有一个这样的 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="RecordsTable">records</string>
   <string name="ProjectTable">projects</string>
   <string name="ActivitiesTable">activities</string>
</resources>

在我的代码中,我想使用这些资源的值,例如:

string recordTable = Resource.String.RecordsTable; //error, data type incompatibility

我知道它 Resource.String.<key>返回一个整数,所以我不能使用上面的代码。我希望该recordTable变量的值为records.

有没有办法可以将这些资源字符串的值用于我的代码的字符串变量?

4

4 回答 4

39

尝试使用Resources.GetString从字符串 Resources 获取字符串

Context context = this;
// Get the Resources object from our context
Android.Content.Res.Resources res = context.Resources;
// Get the string resource, like above.
string recordTable = res.GetString(Resource.String.RecordsTable);
于 2013-04-09T08:39:02.530 回答
13

值得注意的是,您无需创建实例Resources即可访问资源表。这同样适用:

using Android.App;

public class MainActivity : Activity
{
    void SomeMethod()
    {
        string str = GetString(Resource.String.your_resource_id);
    }
}

GetString(),这样使用,是在抽象Context类上定义的方法。你也可以使用这个版本:

using Android.App;

public class MainActivity : Activity
{
    void SomeMethod()
    {
        string str = Resources.GetString(Resource.String.your_resource_id);
    }
}

Resources,以这种方式使用,是类上的只读属性ContextWrapper,它Activity继承自ContextThemeWrapper类。

于 2014-05-29T03:00:08.917 回答
3

如果您不在活动或其他上下文中,则应获取上下文并使用它来获取资源和 PackageName,如下例所示:

int resID = context.Resources.GetIdentifier(listEntryContact.DetailImage.ImageName, "drawable", context.PackageName);
imageView.SetImageResource(resID);
于 2014-10-08T11:09:03.937 回答
-5
int int_recordTable = Resource.String.RecordsTable;

String recordTable = (String.valueOf(int_recordTable)); //no more errors

获取int,然后将其更改为String

于 2013-04-09T08:37:38.910 回答