我只是开始创建使用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
。
有没有一种方法,我可以用我的代码的字符串变量的资源字符串的值?
尝试,因为使用Resources.GetString从字符串资源获取字符串
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);
值得一提的是,你不需要创建实例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
类。
如果您在活动或其他方面不是,你应该得到的背景下,并用它来获取资源和包名,如下面的例子:
int resID = context.Resources.GetIdentifier(listEntryContact.DetailImage.ImageName, "drawable", context.PackageName);
imageView.SetImageResource(resID);
int int_recordTable = Resource.String.RecordsTable;
String recordTable = (String.valueOf(int_recordTable)); //no more errors
获取int
,然后将其更改为一个String