(安卓Xamarin)获取资源的字符串值,而不是为int((Android Xamarin) Get

2019-08-20 19:55发布

我只是开始创建使用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

有没有一种方法,我可以用我的代码的字符串变量的资源字符串的值?

Answer 1:

尝试,因为使用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);


Answer 2:

值得一提的是,你不需要创建实例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类。



Answer 3:

如果您在活动或其他方面不是,你应该得到的背景下,并用它来获取资源和包名,如下面的例子:

int resID = context.Resources.GetIdentifier(listEntryContact.DetailImage.ImageName, "drawable", context.PackageName);
imageView.SetImageResource(resID);


Answer 4:

int int_recordTable = Resource.String.RecordsTable;

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

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



文章来源: (Android Xamarin) Get Resource string value instead of int