(Android Xamarin) Получить значение строки ресурса вместо int
Я только начинаю создавать простое приложение для Android с использованием Xamarin, используя VS2012.
Я знаю, что есть тип ресурсов только для строк.
В моей папке ресурсов у меня есть 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
.
Можно ли использовать значение этой строки ресурса для моих переменных строки кода?
Ответы
Ответ 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);
Ответ 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
.
Ответ 3
Если вы не работаете в каком-либо другом или другом контексте, вы должны получить контекст и использовать его для получения ресурсов и имя_пакета в следующем примере:
int resID = context.Resources.GetIdentifier(listEntryContact.DetailImage.ImageName, "drawable", context.PackageName);
imageView.SetImageResource(resID);
Ответ 4
int int_recordTable = Resource.String.RecordsTable;
String recordTable = (String.valueOf(int_recordTable)); //no more errors
Получите int
, затем измените его на String