28

VS2012 を使用して Xamarin を使用して単純な Android アプリを作成し始めたところです。文字列専用のタイプの Resource があることは知っています。私のリソース フォルダーには、次のような 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を使用して試してみてください

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クラスの読み取り専用プロパティです。ActivityContextThemeWrapper

于 2014-05-29T03:00:08.917 に答える
3

アクティビティまたは別のコンテキストにいない場合は、次の例のように、コンテキストを取得し、それを使用して Resources と 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 に答える