0

strings.xmlに 3 つの文字列があります。

<string name="string1">Hello from string1</string>
<string name="string2">Hello from string2</string>
<string name="string3">Hello from string3</string>

今、「string1」や「string2」のような文字列を渡すメソッドがあります。

void showStringToast(String sName) {
    Toast.makeText(this, getString(R.string.[sName]), Toast.LENGTH_LONG).show();
}

sName がパラメーターとして渡されているときに R.string.sName を正しく参照するにはどうすればよいですか?

4

5 に答える 5

2
// try this
void showStringToast(String sName) {
        Toast.makeText(this, getString(getResources().getIdentifier(sName, "string", getPackageName())), Toast.LENGTH_LONG).show();
    }
于 2013-10-15T04:27:00.357 に答える
2

次のように使用して、パラメーターを文字列に渡すことができます。

<string name="string1">Hello from %1$s (or $d if you want to pass integer) %2$d (second parameter)</string>

getstring メソッドからパラメーターを渡します。

getString(R.string.string1,first parameter ,second parameter ...);ここに画像の説明を入力

これを見る

于 2013-10-15T04:18:57.213 に答える
1

このコードは試していませんが、代わりに HashMaps を利用できると思います。

静的 HashMap をどこかで宣言します。たとえば、Constants.java で宣言します。

public static HashMap<String, String> map = new HashMap<String, String>();

次に、マップを初期化します。これは、メソッドまたはコンストラクター内にある必要があります

map.put("string1", "Hello from string1");
map.put("string2", "Hello from string2");
map.put("string3", "Hello from string3");

これで、次のような文字列を見つけることができます。

Toast.makeText(this, Constants.map.get(sName).toString(), Toast.LENGTH_LONG).show();

Constants.java をインポートすることを忘れないでください

于 2013-10-15T04:17:47.460 に答える
0

この方法を試してください:

  void showStringToast(int sName) {
Toast.makeText(this, getString(sName), Toast.LENGTH_LONG).show();
 } 
于 2013-10-15T04:15:40.980 に答える
0

R.string.something は、文字列への参照を含む整数値です。つまり、R.string.something はここでは変数のようなものです。変数名のように文字列を追加して変数を生成し、生成された変数名が変数のように機能するようなことをしたことがありますか? :)

代わりに、このようにすることができます。Java ソース ファイルで、必要な文字列値をリソースから文字列配列に取得します。その後、必要に応じて使用してください。それが役に立てば幸い。

于 2013-10-15T03:58:06.867 に答える