Подтвердить что ты не робот

(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.

Можно ли использовать значение этой строки ресурса для моих переменных строки кода?

4b9b3361

Ответ 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