私は単純なAndroidアプリをVS2012を使用してXamarinを使用して作成し始めています。文字列専用のリソースのタイプがあることを知っています。私のリソースフォルダーには、次のような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);
注目に値するnotリソーステーブルにアクセスするには、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
クラスから継承します。
アクティビティまたは別のコンテキストにいない場合は、次の例のように、コンテキストを取得し、それを使用してResourcesおよびPackageNameを取得する必要があります。
int resID = context.Resources.GetIdentifier(listEntryContact.DetailImage.ImageName, "drawable", context.PackageName);
imageView.SetImageResource(resID);