15

重複の可能性:
Dynamic Resource Loading Android

Android では、リソースから文字列を読み込むことができますString s = getString(R.string.keyName)。しかし、データベースにはカテゴリのリストがあり、それぞれに名前があります。そのカテゴリ名を取得し、それに基づいて適切な文字列リソースをロードして、ローカリゼーションで機能させるにはどうすればよいですか?

keyName基本的に、動的にする必要があります。私自身の文字列変数。これは可能ですか?ありがとう。

4

2 に答える 2

11

リソースを動的にすることはできないため、次のような switch ステートメントを使用できます。

String name = "";
switch (row.getNameKey()) {
case keyName1:
    name = getString(R.string.keyName1);
    break;
case keyName2:
    name = ...
    ...
}

もう 1 つのアプローチは getIdentifier メソッドです: http://developer.android.com/reference/android/content/res/Resources.html#getIdentifier%28java.lang.String,%20java.lang.String,%20java.lang.文字列%29

Android :変数名を使用して string.xml にアクセスする

于 2011-05-27T21:34:37.040 に答える
4

Java Reflection を使用して、文字列をリソース ID に変換できます。R.string.theName などの文字列であることが事前にわかっていて、"theName" というキー名がある場合は、"your.package.com.R.string" (ここで "your. package.com" は AndroidManifest.xml で定義されているパッケージ名) を使用してクラスを検索し、リフレクションを使用してそこから "theName" 静的メンバーを取得します。受け取った値は getString() メソッドに渡すことができます。

于 2011-05-28T01:31:09.687 に答える