3

特定の値のマッピングを格納するために xml リソース ファイルを使用しようとしています。次に、私のアプリでは、値を取得したいときに、xml ファイルの値にキーでアクセスする方法が必要です。問題は、事前にキーがわからないことです。取得するキーを評価するロジックがいくつかあり、そのキーの値を取得する必要があります。例えば:

    switch(id) {
       case 0:
         key = hello;
         break;
       case 1:
         key = world;
         break;
    }

ここで、xml ファイルに保存したこれらのキーの値にアクセスしたいと思います。どうすればこれを達成できますか? SharedPreferences を使用したくありません。事前にキーがわからないため、resources.getString(R.string._) を正確に使用することはできません。

4

2 に答える 2

3

R.idを使用するだけです。たとえば、次のようにします。

public String getStringById(id) {
    switch(id) {
       case 0:
         return getString(R.id.hello); break;
       case 1:
         return getString(R.id.world); break;
    }
}

しかし、そのようにできない場合は、int次のように String の ID を取得できます。

int text_id = YourActivity.this.getResources()
    .getIdentifier("hello", "string", YourActivity.this.getPackageName());

したがって、コードは次のようになります。

String key = "";
switch(id) {
   case 0:
     key = hello;
     break;
   case 1:
     key = world;
     break;
}
int text_id = YourActivity.this.getResources()
    .getIdentifier(key, "string", YourActivity.this.getPackageName());
String text = YourActivity.this.getResources()
    .getString(text_id);
return text;
于 2013-08-14T20:41:46.577 に答える
2

私が正しく理解していれば、リソースを取得するための文字列「キー」しかありませんか?

getResources().getString(
        getResources().getIdentifier(key, "string", getPackageName()))
于 2013-08-14T20:44:14.307 に答える